任务分解
主要框架:unittest2
-
步骤
1、测试用例
2、BaseTestCase 把每条测试用例 相同的部分提取出来,放在一个父类中,如何所有的测试用例,都需要打开和关闭测试器
3、数据驱动测试 把测试数据和操作步骤分离,(如正向测试(正确)、异向测试(错误))一个功能,至少需要测试1种正常情况及多种异常情况
4、生成测试报告
‼️新建的py文件名要以Demo结尾
编辑代码
技术实验
uniitest2是一个单元测试框架
-
步骤
1、导包 import unittest2
2、创建类,继承自unittest2代码库中的TestCase类,表示当前的类是一个测试用例类
3、声明一个以test开头的方法,表示是一个测试用例方法,该方法可以直接运行
(‼️实际运行时运行并没有结果,运行test_case包提示no test were found,搜索结果是python3要加if name == ‘main’: unittest2.main() )
‼️普通的方法不能直接运行,只有被调用才会被调用
‼️要想被调用,可以在def test_的方法内进行操作 self.fun()
4、重写父类中的两个方法
setUp() 表示在每一个测试用例开始前,要做的预置条件
tearDown() 表示在每一个测试用例结束后,做的场景还原,如测试执行中新建的数据删除还原
‼️setUp、tearDown会在每一个test用例执行时均出现
5、通过mian关键字
if__name__ ==‘main’ 表示在当前文件中运行,才会执行下面的语句,在其他文件中运行,下面的语句不能被调用和执行
unittest2.main() 表示调用unittest2的主方法,执行当前类中的所有方法
根据光标位置的不同可以选择执行不用的测试用例,在mian最前最后会执行所有,在具体方法中会执行当前方法
6、重写父类中的setUpClass()和tearDownClass()方法
setUpClass()在测试用例类中所有方法前要做的预置条件
tearDownClass()在类中所有方法后,要做的场景还原工作
‼️注意:测试用例的执行顺序取决于字母的排列顺序a-z
实操问题
-
问题:步骤3直接运行无结果,步骤5不能随光标定位运行单个用例
解决:第一步:如下图,进入设置,将运行方式改为Unittests
第二步:选择右上角运行配置,Edit Configurations
点击➕,add new Configuration—>Python tests—>Unittests,配置完之后点击Apply
- 问题:上述操作后现在运行setUpClass跟tearDownClass不起作用了
怎么取消unittest的运行方式???
解决:通过这个入口把以【Unittests for整个文件名】的运行方式删了
综合代码
- 综合代码
import unittest2
class Unittest2Demo(unittest2.TestCase):
def test_login(self):
print('L开头用例1')
self.func1()
def func1(self):
print('用例1中方法2')
def test_a_test(self):
print('A开头用例2')
def setUp(self):
print('方法头')
def tearDown(self):
print('方法尾')
@classmethod
def setUpClass(cls):
print('类头')
@classmethod
def tearDownClass(cls):
print('类尾')
if __name__ == '__main__':
unittest2.main()