继续 上篇,继续介绍使用这个测试框架的一些贴士。
./mtr 不指定任何参数可以直接运行测试用例集。
./mtr --print-testcase 如果想知道测试框架选择了哪些测试用例,可指定--print-testcase。此时不会实际运行测试用例,但打印出所有选择的测试用例,并按照它们运行的顺序。
同时还支持多种 参数 控制运行哪些测试用例集或测试用例的选项。例如 --do-test 可指定运行特定的测试用例,并支持正则表达式; --suite 可指定运行特定的测试用例集;-do-test-list =FILE 可运行用户自己定制的文件中的测试用例集合。
--skip-test 作用与 -do-test 相反,跳过某些测试案例。--skip-test-list=FILE 与 -do-test-list =FILE 相反,跳过FILE中列出的测试用例。
一些其他的运行参数,
--timer 显示测试用例的执行时间。使用no-timer来禁用。
--force-restart 始终在测试用例之间重新启动服务器。
--repeat=N 每个测试用例运行N次,不管其是成功还是失败。
--retry=N 如果一个测试用例失败了,它最多可以重试N次(默认为1)。retry也受停止前的最大失败次数的限制( --retry-failure选项)。除非同时使用--force,否则这个选项没有任何作用;没有这个选项,测试执行将在第一次失败后终止。--retry和--retry-failure选项并不影响用--repeat重复测试的总失败次数,因为每一次重复都被认为是一个新的测试案例,如果失败了,还可以重试。
--retry-failure=N 当使用--retry选项重试失败的测试用例时,在发生N次失败时停止(默认为2)。把它设置为0或1可以有效地关闭重试。
--testcase-timeout=MINUTES 最大测试用例运行时间,以分钟为单位(默认为15)。
--suite-timeout=MINUTES 测试套件的最大运行时间,以分钟为单位(默认为360)。
通常,使用如下命令去运行测试框架下的所有测试用例集。指定--force 使得 mtr 执行继续,无论测试案例是否失败(默认情况下,如果测试案例失败,mtr 会退出) ; --retry-failure=0 指定失败的测试用例不去重新运行;测试用例30分钟超时,测试用例集720分钟超时。
./mtr --force --max-test-fail=0 --retry-failure=0 -no-reorder --big-test --testcase-timeout=30 --suite-timeout=720
测试框架运行中的出现的一些典型错误:
1. result文件过时。
有测试用例的result文件中有当前年份,这测试用例随着时间的变迁,下一年及以后就会失败。这种情况下,要重新生成 result文件 ./mtr --record suite-name.testcase-name,例如 ./mtr --record main.read_only_ddl
2. 一些测试用例需要用非root用户运行才能成功。
3. 测试用例里面重启mysqld的时候需要指定 --user=root ,否则mysqld会起不来导致测试用例失败 或者 验证 .result 文件匹配导致失败。log里面出曝出 “
[ERROR] [MY-010123] [Server] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root! ”这样的错误。