一:避坑点
1、使用unittest时,默认不会执行if __name__ == '__main__':,而是以“Run 'Unittests in XXX' ”方式运行。
我们需要通过menu:Run->Edit Configurations打开配置窗口,在Python下,新建一个运行方式case_python(名字自取),将运行的脚本加入,保存后,以此方式运行测试脚本,就能进入方法if __name__ == '__main__':。
script path填入脚本的路径。Working directory填入项目的根目录。
2、进入方法if __name__ == '__main__':,我们可以添加自定义的测试顺序,或者将测试结果输出到外部文件或html文件中。
二:自定义测试case执行顺序
1、if __name__ == '__main__':中,可以通过TestSuite定义case执行顺序
suite = unittest.TestSuite() suite.addTest(TestCreateTask("test_02")) suite.addTest(TestCreateTask("test_01"))2、定义TestCase时,可以通过case的名称来定义执行顺序
如:def test_01(self)、def test_02(self)
能通过名称来确定执行顺序的原因是:unittest源码getTestCaseNames对测试用例的名称进行了排序,默认是根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。
三:将测试结果输出到外部文件
if __name__ == '__main__': # 安装顺序执行case suite = unittest.TestSuite() suite.addTest(TestCreateTask("test_02")) suite.addTest(TestCreateTask("test_01")) # 执行结果输出到外部文件 with open("unit_test_result.txt", "w") as f: # verbosity = 2 查看完成的执行情况 # verbosity默认为1,可以设置为0和2。 # 0 (静默模式): 你只能获得总的测试用例数和总的结果。 # 1 (默认模式): 非常类似静默模