reference:
Selenium automated test unit testing framework using -unittest
First, the pre-conditions (the setUp), postconditions (the tearDown) and using 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('testSecond_01'))
suite.addTest(TestCase_01('testFirst_01'))
unittest.TextTestRunner().run(suite) # 将根据case添加的先后顺序执行
Output:
这是所有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)
Second, run multiple test cases .py files
Prepare two test files test_case01.py and test_case02.py (content similar to the above), there are test scripts to be executed. Create a run_case.py, used to perform all tests.
#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")
# discover相当于在指定的case所在的路径里寻找所有名称模式匹配pattern的文件并加载其内容
runner = unittest.TextTestRunner(verbosity=2) # verbosity控制输出的执行结果的详细程度,可为0,1,2,其中0最简单,1是默认值,2最详细
runner.run(discover)
if __name__=='__main__':
unittest.main()
:( marked with an output of 01 is test_case01.py inside, 02 is test_case02.py inside the verbosity to 2 years after the result is also very easy to distinguish)
这是所有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
Further may traverse each test_case * .py inside the case and added to the Test Suite, the last performed together, and outputs the same as above.
#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()