单元测试框架:unittest
unittest包括四大组成部分:
1.TestCase:一个TestCase的实例就是一个测试用例。(一个完整的测试流程)
包括:
测试前准备环境的搭建(setUp)
实现测试过程的代码(run)
测试后环境的还原(tearDown)
2.TestFixture:对一个测试用例环境的搭建和销毁,就是一个fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现。
EG:
测试用例的执行需要访问数据库。
在setUp()中建立数据库连接来进行初始化。
在tearDonw()中清除数据库产生的数据。
3.TestSuite:测试套件:把多条用例放在一起执行。TestSuite用来组装单个测试用例。测试套件需要TestRunner去执行
4.TestRunner:测试的执行是单元测试中一个重要的概念。
一般单元测试框架中都会提供丰富的执行策略和执行结果。
我用以下例子来讲解以下:
新建的unit01文件为:右键->new->Python File->python unit test
unit01文件代码如下:
import unittest
from selenium import webdriver
from time import sleep
class MyTestCase(unittest.TestCase):
def setUp(self):
print("one")
def tearDown(self):
print("two")
def test_baidu(self): #第一个TestCase
driver=webdriver.Chrome()
driver.get("http://www.baidu.com")
sleep(2)
driver.quit()
def test_sogou(self): #第二个TestCase
driver = webdriver.Chrome()
driver.get("http://www.sogou.com")
sleep(2)
driver.quit()
在unit01文件里面,包括了TestCase和TestFixture,这个文件可以直接运行。test_baidu和test_sogou就是所编写的两个测试用例TestCase。setUp和tearDown是TestFixture的方法,一个测试用例环境的搭建和销毁,就是一个fixture,通过覆盖TestCase的setUp()和tearDown()方法来实现。
run.py代码如下:
```python
from unit01 import *
import unittest
suite=unittest.TestSuite() #TestSuite测试套件
suite.addTest(MyTestCase('test_sogou'))
suite.addTest(MyTestCase('test_baidu'))
if __name__=="__main__":
runner=unittest.TextTestRunner() #TestRunner执行器
runner.run(suite)
在run.py文件里面,写了TestSuite测试套件和TestRunner执行器。在unit01文件里,两条用例是一起执行的,在run.py里可以组合测试用例。TestRunner就是起一个执行器的作用,运行测试套件。
unittest框架_多个测试用例执行
当有多个测试文件时,用例执行:

#一条一条执行,测试用例多时很麻烦
# import unittest
# from case.unit01 import *
# from case.unit02 import *
# suite=unittest.TestSuite()
# suite.addTest(MyTestCase('test_baidu'))
# suite.addTest(MyTestCase('test_sogou'))
# suite.addTest(MyTestCase2('test_baidu'))
# suite.addTest(MyTestCase2('test_sogou'))
#
# if __name__=="__main__":
# runner=unittest.TextTestRunner()
# runner.run(suite)
#测试用例多时,新建一个文件case,吧用例都放进文件夹里
import unittest
dir='./case/'
suite=unittest.defaultTestLoader.discover(start_dir=dir,pattern='unit*.py')
if __name__=="__main__":
runner=unittest.TextTestRunner()
runner.run(suite)
unittest框架_多个测试用例执行顺序
unittest框架默认根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0–9、A–Z、a–z。
对于测试目录与测试文件来说,unittest框架同样是按照这个规则来加载测试用例的。
那么如何改变用例的执行顺序?
discover()的加载用例规则与main()方法相同,我们只能通过测试用例的命名来提高被执行的优先级。EG: test_a……test_z
但是如果用了测试套件,那么顺序就会以测试套件的顺序去运行,比如上图,在unit01中,顺序是先执行baidu,在执行sogou,但是如果运行run.py,那么执行顺序是先sogou在baidu。
所以!!文件的命名还是非常重要的啦
本文介绍了使用unittest进行UI自动化测试的基础知识,包括unittest的四个核心组成部分:TestCase、TestFixture、TestSuite和TestRunner。通过示例展示了如何创建测试用例、设置测试环境、组合测试套件以及执行测试。还探讨了测试用例的执行顺序,并强调了测试文件命名的重要性。
:unittest框架入门了解&spm=1001.2101.3001.5002&articleId=107663024&d=1&t=3&u=0e94fd2c81d74fe5815706194c10aa23)
855

被折叠的 条评论
为什么被折叠?



