单元测试是指在编程中,针对程序模块的最小单元(类中的方法)进行精确性考验的测试事情。python+selenium自动化测试中常日利用unittest或者pytest作为单元测试框架。而java+selenium自动化测试中常日利用junit或者testng作为单元测试框架。
二、unittest框架的4个主要观点。(1) test fixture(测试固件):一个测试固件代表一个或多个测试实行前的准备事情和测试结束后的清理事情,例如:创建数据库连接、关闭数据库连接、启动做事进程、测试环境的清理等。
(2) test suite(测试套件):一个测试套件是一组测试用例的凑集(也可以是一组测试套件的凑集)。它的浸染是将测试用例凑集到一起一次性实行凑集中所有的测试用例。
(3) test case(测试用例):一个测试用例是一个完全的测试流程,是最小的测试单元,常日会继续unittest.TestCase类。
(4) test runner(测试运行器):一个测试运行器实行设定的测试用例并将测试结果反馈给用户两部分功能组成。
三、unittest框架中的分外方法以及分外方法实行顺序。(1)自动化中哀求所有的测试用例都继续unittest.TestCase基类。TestCase基类中定义的几个分外的方法如下:
setUp() 每个测试用例运行前实行,紧张浸染是测用例前的初始化事情。
tearDown() 每个测试用例运行后实行,紧张浸染是测试用例后的清理事情。
setUpClass() 所有测试用例运行前运行,必须利用@classmethod装饰器装饰,在setUp()方法前实行,全体测试过程只实行一次,紧张浸染是单元测试前的准备事情。
tearDownClass() 所有测试用例运行后运行,必须利用@classmethod装饰器装饰,在tearDown()方法后实行,全体测试过程只实行一次,紧张浸染是单元测试后的清理事情。
(2) 实行顺序如下:
setUpClass() #测试用例一 setUp() test_01() tearDown() #测试用例二 setUp() test_02() tearDown()tearDownClass()
四、测试用例的命名。
最大略的测试用例方法命令只须要覆盖runTest()方法即可。而更可取的是测试用例以"test"开头命名。
如果你以为此文对你有帮助,如果你对此文有任何疑问,如果你对软件测试、接口测试、自动化测试、口试履历互换感兴趣欢迎加入软件测试技能群:695458161,群里发放的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起互换技能哦。
五、unittest加载并实行测试用例方法在unittest单元测试框架中,供应两种单元测试加载实行测试用例的方法:
(1)直接通过unittest.main()方法加载并实行当前py文件中的测试用例。这是一种最大略的加载方法,所有的测试方法实行顺序都是按照方法名字符串所表示的ASCII码升序排序(数字与字母的顺序为:0-9,A-Z,a-z)。如:
(2)将所有的测试用例添加到测试套件凑集中,然后一次性加载所有的测试工具。此方法经测试实行顺序是按照测试用例的加载顺序实行,但是特殊要把稳实行办法。如果是点击右键的办法运行那么总是以unittest办法实行(这种办法实行因此ASCII升序实行),而想要从main方法实行,则须要在pycharm的右上角修正Pycharm的运行方法。并按运行按钮从main方法运行。(这种办法实行是按照测试用例加载顺序实行)
测试用例添加到测试套件的办法:
把稳:以上两种办法都可以实行测试套件。
#个中:TestManage是类名,test_add是用例名,verbosity参数解释如下:
#verbosity参数可以掌握输出的缺点报告的详细程度,只有3个取值:
#<=0(quiet): 只显示实行的用例的总数和全局的实行结果。输出结果中不提示实行成功的用例数。
#1(default): 默认值,显示实行的用例的总数和全局的实行结果,并对每个用例的实行结果(成功T或失落败F)有个标注。
#>=2(verbose): 显示实行的用例的总数和全局的实行结果,并输出每个用例的详细的实行结果。
实行后测试结果解释:
.:一个点表示一个测试用例实行成功。
F:一个F表示一个测试用例实行失落败。
E:一个E表示测试用例中本身有非常。
六、按照特定顺序实行测试用例通过把测试用例按顺序加载到测试套件中实行。
通过修正函数名的办法来让测试用例按特定顺序实行。如:
def test1_add(self):
def test2_delete(self):
def test3_update(self):
def test4_select(self):
把稳:从后期自动化项目批量实行多个py文件的所有测试用例的角度出发第一种办法太过于繁琐,建议利用第二种办法。
七、忽略测试用例。在批量实行测试用例时,有时会碰着某些测试用例不须要实行,但是又想保留测试代码。除了可以注释掉代码外还可以利用unittest框架供应的更简便的表明方法来忽略那些暂时不须要实行的测试用例。忽略测试用例分为无条件忽略和有条件忽略。
其余还有一个:@expected failure #代表如果test失落败了不计入失落败的case数目
八、unittest单元测试框架中常见的断言。assertEqual(a, b) a == b 最常用
assertNotEqual(a,b) a != b
assertTrue(x) x is True 最常用
assertFalse(x) x is False
assertIs(a, b) a is b
assertIsNot(a, b) a is not b
assertIsNone(x) x is None
assertIsNotNone(x) x is not None
assertIn(a, b) a in b 最常用
assertNotIn(a, b) a not in b
assertIsInstance(a,b) isinstance(a, b)
assertNotIsInstance(a,b) not isinstance(a, b)
assertGreater(a,b) a > b
assertGreaterEqual(a,b) a >= b
assertLess(a, b) a < b
assertLessEqual(a,b) a <= b
个中assertEqual(a,b),asserTrue(),assertIn为常用断言方法。
assertEqual(a,b)用于判断两个字符串是否相等。
assertTrue(x)用于断言一个字符串是否在页面资源。
assertIn(a,b)用于判断一个jsp或php页面在当前页面地址中。