unittest框架
2021-09-01 本文已影响0人
PeppaTang
test case
test case是单元测试中的最小个体。它检查特定输入的响应信息。unittest提供了一个基础类:TestCase,用来创建test case。
1. 前置后置
setup和teardown
tearDown()
该方法在测试方法被执行并且结果记录后立即被调用。如果测试方法出现异常,子类实现的功能就需要特别的检查。任何异常,除了AssertionError和SkipTest,只要是该方法抛出的异常都会被视为其他错误而不是测试失败(会在报告中统计)。该方法只有在setUp()执行成功时才会调用,而跟测试的结果无关。默认该方法没有操作。
@classmethod
def tearDowmClass(cls):
...
setUpClass()
当类中的测试方法被执行前会被调用的一个类方法。该方法只会在类方法前调用,也就是带有calssmethod装饰器并且没有其他参数的方法。
def setUpClass(cls) :
cls.token = None
2. 用例管理:
默认所有以test开头或结尾的函数,都会默认识别为测试用例.
3. 套件和运行器
用于管理测试用例和产出测试报告
4 .断言机制:
默认已经封装非常多的断言方法可以直接调用,通过self进行调用
5. unitTest的基本应用规则:
-
用例都需要用test开始投惠介为
-
用例的运行顺序都是固定模式 排序规则:,0-9,A-Z, a-z
-
setup与teardown的作用域分为两种,函数与类
setup与teardown在每一个测试用例执行前后都会执行 -
所有的unitTest类,如果需要使用,则一定继承TestCase类
测试用例的设计会有正向反向,会产生非常多的数据不同流程场景 -
ddt,全称叫做data driver test, 数据驱动测试,专门用于搭配数据驱动来实现的基本数据传递的自动化测试,通过装饰器来调用
data 装饰器:将传入的值,基于,进行分割
@data(‘珠珠’,‘好看珠珠’)分割成为:- 珠珠
- 好看珠珠
再给予分割数据的数量,决定测试用例的执行次数,将数据依次传入测试用例中执行
@unpack 是用于数据的二次分割,分割方式与@data一样
6.数据与代码分离
- 多线程的实现
import unittest
from selenium import webdriver
from ddt import ddt,data,unpack
class CaseDemo(unittest.TestCase):
# 前置条件
def setUp(self)->None:
self.driver = webdriver.chrome()
self.driver.get('http://baidu.com')
# 后置条件
def tearDown(self)->None:
self.driver.quit()
# 测试用例的执行
# ddt
@ data(['珠珠', '好看珠珠'], ['珠珠1', '好看珠珠1'])
@unpack
def test_1(self, locator, text):
self.driver.find_element('id','kw').send_keys(text)
self.driver.find_element('id', 'su').click()
#def test_2(self, text):
# self.driver.find_element('id', 'kw').send_keys(text)
# self.driver.find_element('id', 'su').click()
if __name__=='__main__':
unittest.main()