unittest是python系统自带的作为单元测试的测试框架,相当于java中的JUnit,unittest中有4个重要概念:test fixture, test case,test suite ,text runner 通过这四个模块,尅实现ui和接口自动化,我们要讲的内容也是通过这四个模块进行的,在这之前需要介绍下,unittest.main()
unittest.main():使用它可以方便的将一个单位测试模块变为可直接运行的测试脚本,main()方法使用TestLoader类来搜索所有包含在该模块中已“test”命名开头的测试方法,并自动执行他们。执行方法默认按照的顺序是:根据ascll码的顺序加载测试用例,数字和字母顺序为:0-9,A-Z,a-z,所以以A开头的测试用例方法会优先以a开头的用例方法
实际应用:
环境搭建:无需搭建,输入import unittest即可
四大组件:
1.test fixture:用于减少重复的工作,在进行请求时,很多请求都会打开或者关闭浏览器,这种时候,每次请求都会进行很多重复的操作,因此,test fixture就是为了解决这个问题出现的
Test Fixture用在测试方法前,或者测试方法后,主要功能是提供一些测试需要用的装置,这些装置可以是数据,可以是环境配置也可以是一个运行前状态
SetUp():unittest执行的前置条件,每次执行一个新的用例前都会先执行该方法下的内容
Teardown():unittest执行的后置条件,每次执行完一个新的用例后都会执行该方法下的内容
tearDownClass():在一个类里面只会执行一次,即使这个测试类有多个测试函数(相比较setup先执行)注意:只有在TestSuite
的run方法里面才对其调用
SetUpClass():在一个类里面只会执行一次,即使这个测试类有多个测试函数(相比较teardown后执行)注意:只有在TestSuite
的run方法里面才对其调用
2.test case:测试用例,通过集成unittest.testcase来实现用例继承。在unittest中,测试用例都是通过test来识别的,用例没有test无法识别
如下图我们可以看到,用例中没有使用test,就无法识别
3.test suite:测试套件,也称测试用例集,是测试用例、测试套件或两者组成的集合,用于组装一组要运行的测试。我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序呢?一个测试文件,我们直接执行该文件即可,但如果有多个测试文件,怎么进行组织,总不能一个个文件执行吧?为了解决这两个问题,test suite套件应运而生
要使用suite方法钱,首先要调用suite的类方法: unittest.TestSuite()
然后通过addTest()方法调用具体的用例,括号里面写类名,类括号里面写用例名字
然后运行我们选择的方法,套件通过TextTestRunnet方法运行,unittest.TextTestRunnet()
通过run()执行
方法二:addTests()方法调用具体的用例,和上面一样,不过传入的是一个列表,列表里面写需要调用的用例
方法三:unittest.defaultTestLoader.discover() 通过目录执行指定文件内容
est_div="./" #先获取当前目录下所有文件
#通过变量discover=什么获取到文件,括号里面第一个参数是路径,第二个参数是我们要执行的文件名
discover=unittest.defaultTestLoader.discover(start_dir=test_div, pattern="duanyan.py")
方法四:执行模块中的某一个类
括号里面是文件模块名.后面是类名,如果不加类名,就是执行整个模块 suite.addTests(unittest.TestLoader().loadTestsFromName("duanyan.da")) load Tests From Name:从名称中加载测试 括号后面填写文件名.类名4.unittest runner:运行器,前面已经讲了,一般通过runner来调用suite去执行,unittest框架的TextTestRunner()类,通过该类下面的run()方法运行suite所组装的测试用例,入参为suite测试套件