Python3--unitest框架的使用

转载地址:https://blog.csdn.net/u013378642/article/details/82386226

Selenium自动化测试-unittest单元测试框架使用

unittest官方文档


一、前置条件(setUp)、后置条件(tearDown)和Test Suite的使用

#文件名: test_case01.py
#coding=utf-8
import unittest
class TestCase_01(unittest.TestCase): # 继承unittest.TestCase

    @classmethod
    def setUpClass(cls):
        print('这是所有case的前置条件01')

    @classmethod
    def tearDownClass(cls):
        print('这是所有case的后置条件01')
    
    def setUp(self):
        print('这是每条case的前置条件01')
    
    def tearDown(self):
        print('这是每条case的后置条件01')

    def testThird_01(self): # 测试用例的命名必须以test开头,否则不予执行
        print('01: 第三条case')
    
    def testFirst_01(self):
        print('01: 第一条case')
    
    @unittest.skip('不执行这条case') # 跳过这条case
    def testSecond_01(self):
        print('01: 第二条case')

    def testFourth_01(self):
        print('01: 第四条case')

if __name__ == '__main__':
    # unittest.main() # 使用main()直接运行时,将按case的名称顺序执行
    suite = unittest.TestSuite()

    suite.addTest(TestCase_01('testThird_01')) # 将需要执行的case添加到Test Suite中,没有添加的不会被执行
    suite.addTest(TestCase_01('testFirst_01'))
    suite.addTest(TestCase_01('testFirst_01'))
    unittest.TextTestRunner().run(suite) # 将根据case添加的先后顺序执行

输出:


这是所有case的前置条件01
这是每条case的前置条件01
01: 第三条case
这是每条case的后置条件01
.s这是每条case的前置条件01
01: 第一条case
这是每条case的后置条件01
.这是所有case的后置条件01
 
----------------------------------------------------------------------
Ran 3 tests in 0.001s

 

OK (skipped=1)

二、同时运行多个.py文件中的测试用例

准备两个测试文件test_case01.py和test_case02.py(内容与上面类似),里面有需要执行的测试脚本。新建一个run_case.py,用来执行所有测试。

#run_case.py
#coding=utf-8
import unittest
import os

class RunCase(unittest.TestCase):
    def test_case(self):
        case_path = os.getcwd() # casea所在路径
        discover = unittest.defaultTestLoader.discover(case_path, pattern="test_case*.py")
        # discover相当于在指定的case所在的路径里寻找所有名称模式匹配pattern的文件并加载其内容
        runner = unittest.TextTestRunner(verbosity=2) # verbosity控制输出的执行结果的详细程度,可为0, 1, 2,其中0最简单,1是默认值,2最详细
        runner.run(discover)

if __name__ == '__main__':
    unittest.main()

输出:(标有01的是test_case01.py里面的,02是test_case02.py里面的,将verbosity设为2后结果里也很容易分辨)

这是所有case的前置条件01
testFirst_01(test_case01.TestCase_01) ... 这是每条case的前置条件01
01:第一条case
这是每条case的后置条件01
ok
testFourth_01 (test_case01.TestCase_01) ... 这是每条case的前置条件01
01: 第四条case
这是每条case的后置条件01
ok
testSecond_01 (test_case01.TestCase_01) ... skipped '不执行这条case'
testThird_01 (test_case01.TestCase_01) ... 这是每条case的前置条件01
01: 第三条case
这是每条case的后置条件01
ok
这是所有case的后置条件01
这是所有case的前置条件02
testFirst_02 (test_case02.TestCase_02) ... 这是每条case的前置条件02
02: 第一条case
这是每条case的后置条件02
ok
testSecond_02 (test_case02.TestCase_02) ... 这是每条case的前置条件02
02: 第二条case
这是每条case的后置条件02
ok
testThird_01 (test_case02.TestCase_02) ... 这是每条case的前置条件02
01: 第三条case
这是每条case的后置条件02
ok
这是所有case的后置条件02
 
----------------------------------------------------------------------
Ran 7 tests in 0.006s
 
OK (skipped=1)
.
----------------------------------------------------------------------
Ran 1 test in 0.021s
 
OK

另外也可以遍历每个test_case*.py里面的case并将其添加到Test Suite中,最后一并执行,输出结果和上面一样。

#run_case.py
#coding=utf-8
import unittest
import os

class RunCase(unittest.TestCase):
    def test_case(self):
        case_path = os.getcwd() #case所在路径

    discover = unittest.defaultTestLoader.discover(case_path, pattern="test_case*.py")
    runner = unittest.TextTestRunner(verbosity=2)
    # runner.run(discover)
    test_unit = unittest.TestSuite()
    for test_suite in discover:
        for test_case in test_suite:
            test_unit.addTest(test_case)
        runner.run(test_unit)

if __name__=='__main__':
    unittest.main()

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值