1.用例执行顺序规则
以ASCII码的大小顺序执行
2.加载和测试运行测试用例的方式
2.1 main方法
unittest.main()
2.2 通过测试套件加载运行
2.2.1 一次性加载一个
import unittest
from testcases.test_detail import TestDetail
from testcases.test_show import TestShow
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(TestShow("test_show"))
suite.addTest(TestDetail("test_good_detail"))
unittest.main(defaultTest="suite")
2.2.2 一次性加载多个
if __name__ == '__main__':
suite = unittest.TestSuite()
cases = [TestShow("test_show"), TestDetail("test_good_detail")]
suite.addTests(cases)
unittest.main(defaultTest="suite")
2.3 加载一个目录下的所有测试用例
import unittest
if __name__ == '__main__':
suite = unittest.defaultTestLoader.discover('./testcases', pattern='test_*.py')
unittest.main(defaultTest="suite")
3.unittest.main()底层参数详解
main = TestProgram
def __init__(self, module='__main__', defaultTest=None, argv=None,
testRunner=None, testLoader=loader.defaultTestLoader,
exit=True, verbosity=1, failfast=None, catchbreak=None,
buffer=None, warnings=None, *, tb_locals=False):
module='main':测试用例所在的路径,默认为当前路径main
defaultTest:待执行的测试用例名称,默认执行所有用例
argv:接收外部传递给程序的参数
testRunner:测试运行器
testLoader:测试加载器
exit:是否在测试完成之后退出程序
verbosity:显示信息的详细程度,
取值为<=0时只显示用例总数和全局结果
取值为1时显示用例总数和全局结果,且标记每个用例的执行结果(具体标记见4.运行结果)
取值>=2时显示用例总数和全局结果,并输出每个用例的详细结果
failfast:是否在测试失败是终止测试
4.ddt数据驱动
ddt,即data driver test,它可以完美的应用于unittest框架实现数据驱动
ddt是通过装饰器的方式来完成的,主要有以下几个装饰器
@ddt 类装饰器,申明当前类使用ddt框架
@data 函数装饰器,用于给测试用例传递数据
@unpack 函数装饰器,将数据解包,一般用于元组和列表
@file_data 函数装饰器,可以读取json或yaml文件
ddt数据驱动中,测试用例的执行次数是由@data()传参的个数决定的。传入一个值执行一次,传入多个值执行多次
如果传入的是多个元组(或列表),那么可以使用@unpack解包元组和列表,但要注意解包数量要和元组(列表)中的值的个数保持一致
如果传入的是多个字典,则可使用@unpack解包,但是用例中的名称和个数必须和字典的key保持一致