三种方式:
方式 | 简介 |
---|---|
unittet.main() | 依次执行当前类文件中的所有用例,按照test后第一个字母的ascall码顺序执行 |
unittet.TestSuite() | 按照addTest()里加载的顺序执行测试用例。注意运行时要以python文件模式运行 |
unittest.defaultTestLoader.discover | 指定某个目录下的某一类py文件进行运行,且运行所有测试用例 |
一、unittest.main()的运行原理
实现方法:直接在脚本下添加一下代码,执行脚本
if
name
== ‘
main
’:
unittest.main()
文件路径:G:\PycharmProjects\InterFaceFrame\test_case\test_MyCase.py
import unittest
class unit_test_3(unittest.TestCase):
def setUp(self):
print('初始化~~')
def test_1_register(self):
print('注册的~~~')
def test_2_login(self):
print('登录的~~~')
def test_3_edit(self):
print('编辑的~~~')
def tearDown(self):
print('释放~~')
if __name__ == '__main__':
unittest.main()
二、unittest.TestSuite()测试套
文件路径:G:\PycharmProjects\InterFaceFrame\test_framework\test_run_suite.py
import unittest
from test_case.test_MyCase import unit_test_3
if __name__ == '__main__':
#创建测试套件对象
suite1 = unittest.TestSuite()
#把测试用例加进测试套件,只加入一个测试用例
suite1.addTest(unit_test_3("test_1_register"))
#加入多个测试用例的方法:
tests = [unit_test_3("test_2_login"),unit_test_3("test_3_edit")]
suite1.addTests(tests)
#声明框架的运行对象
runner = unittest.TextTestRunner()
#runner对象调用run方法,执行测试套件
runner.run(suite1)
三、unittest.defaultTestLoader.discover
注:
使用模块的方式执行测试用例,不能通过导入类库的方法。要通过读取指定目录下的模块的方式进行。因为这个执行一般放在独立的py文件中,指定某一类py文件需要运行,并且运行里面的所有测试用例。跟要运行的py文件里的执行函数main()没有关系,不会受执行函数main()影响
目标:
使用文件加载呃方法,执行测试用例。执行一个或多个测试文件,而不是测试用例方法
方法:
将执行文件保存在指定路径,通过unittest的discover方法,传入path,打开这个文件,再通过runner对象进行执行。
(1)py文件和runner放在同一个y文件或者同一个包中
import unittest
class unit_test_3(unittest.TestCase):
def setUp(self):
print('初始化~~')
def test_1_register(self):
print('注册的~~~')
def test_2_login(self):
print('登录的~~~')
def test_3_edit(self):
print('编辑的~~~')
def tearDown(self):
print('释放~~')
if __name__ == '__main__':
#声明要执行的py文件路径
dir_path = './' #执行的当前目录的文件,代表根目录
discoverObj = unittest.defaultTestLoader.discover(dir_path,paras = "test_*.py")
#创建运行对象
runner = unittest.TextTestRunner()
runner.run(discoverObj)
(2)py文件放在独立的包中:
文件路径:G:\PycharmProjects\InterFaceFrame\test_framework\test_run_loader.py
import unittest
if __name__ == '__main__':
#声明要执行的py文件路径
dir_path = r'G:\PycharmProjects\InterFaceFrame\test_case'
discoverObj = unittest.defaultTestLoader.discover(str(dir_path),pattern = "test_*.py")
#创建运行对象
runner = unittest.TextTestRunner()
runner.run(discoverObj)
四、生成测试报告:
(1)第一种
import unittest
if __name__ == '__main__':
#声明要执行的py文件路径
dir_path = r'G:\PycharmProjects\InterFaceFrame\test_case'
discoverObj = unittest.defaultTestLoader.discover(str(dir_path),pattern = "test_*.py")
#创建运行对象
with open('output.html','a') as f:
runner = unittest.TextTestRunner(stream = f,verbosity=1)
runner.run(discoverObj)
测试报告如下,因为print不打印在测试报告中,所以输出没有内容
(2)第二种
with open('output.html','a') as f:
#verbosity的参数改为“2”
runner = unittest.TextTestRunner(stream = f,verbosity=2)
runner.run(discoverObj)
测试报告格式,包含测试用例case的测试结果