1 UnitTest入门
1.1 介绍
Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest则是Python语言的标准单元测试框架。随着自动化更新,能够完整地结合Selenium、Appium、Requests等实现UI自动化与接口自动化。
1.2 四大特色
- TestCase:测试用例。所有的用例都是直接继承于UnitTest.TestCase类。
- TestFixture:setUp和tearDown,作为前置条件和后置条件。
- TestSuite 测试套件 + TestRunner 测试运行器:能够更有效地针对业务来进行用例管理,包括测试报告的集成
- 断言机制:在UnitTest中封装好了成熟断言,通过self.可以直接被调用。
1.3 环境部署
- UnitTest是一个测试用例框架
- Python安装时就默认会有一个builtin模块,UnitTest框架是默认集成在python中的。意味着只要安装python就有UnitTest
- 只需通过import unittest即可实现调用
2 UnitTest测试框架应用
(1) 定义测试类:类名继承unittest.TestCase
(2) 定义测试用例:所有的测试用例,都是以函数的形式存在,函数的名称都要以test_开头;用例执行顺序遵循 0-9, A-Z, a-z
(3) 所有的前置后置都有等级存在:class级别,method级别
method级别:与用例关联每一条用例运行前会执行前置,运行后会执行后置
class级别:必须定义装饰器@classmethod,前置是在所有内容运行前运行一次,后置是所有内容运行结束后运行一次
(4) cls对象只在class级别前后置中定义,调用还是通过self进行调用
(5) 修改cls对象的值,在全局生效,需要通过类名.对象进行赋值操作才可以生效;而通过self.对象进行赋值只能在当下函数中生效(多流程之间有数据的交互)
(6) 定义断言
(7) 运行
# 导入unittest包
import unittest
from selenium import webdriver
from selenium.webdriver.common.by import By
# 定义测试类,必须继承unittest.TestCase
class Visit(unittest.TestCase):
# class级别前置
@classmethod
def setUpClass(cls) -> None:
cls.wd = webdriver.Chrome()
cls.title =