unittest

(二)unittst用例操作

烈酒焚心 提交于 2019-12-05 11:11:38
一、跳过用例 @unittest.skip(reason) 跳过被此装饰器装饰的测试。 reason 为测试被跳过的原因。 应用场景: 1,有些用例不需要再次执行,或者作废的用例 2,本次测试构建,不需要执行的用例 二、跳过用例,如果条件为真 @unittest.skipIf(condition, reason) 当 condition 为真时,跳过被装饰的测试。 应用场景: 待写 三、跳过用例,如果条件为假 @unittest.skipUnless(condition, reason) 跳过被装饰的测试,除非 condition 为真。 应用场景: 待写 四、直接告诉该条用例时失败,用例失败时,则测试成功 @unittest.expectedFailure 把测试标记为预计失败。如果测试不通过,会被认为测试成功;如果测试通过了,则被认为是测试失败 应用场景: 待写 示例代码: # -*- coding:utf-8 -*- import unittest class MyTestClass(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def fail(self,keyWord): print(keyWord) @unittest.skip("不执行test_nothing方法") def

(一)unittest介绍

醉酒当歌 提交于 2019-12-05 10:01:55
一、unittest框架四要素: test fixture 测试脚手架 test case 测试用例 test suite 一系列的测试用例,测试套件,用于组合一系列测试用例 test runner 测试运行器 用于运行测试套件,并图形化生成测试报告 test case 测试用例 继承TestCase类,创建测试实例 def WidgetTestCase(unittest.TestCase): def setUp(self): pass def tearDown(self): pass def test_default_widget_size(self): self.assertEqual("3","3") def test_widget_resize(self): self.assertTrue(1>3) test suiteCase 测试套件 组织测试用例 def suite(): suite = unittest.TestSuite() suite.addTest(WidgetTestCase("test_default_widget_size")) suite.addTest(WidgetTestCase("test_widget_resize")) return suite() test runner 测试启动器 运行测试套件,并生成测试测试报告 if __name__

BeautifulReport模块产生的测试报告

ⅰ亾dé卋堺 提交于 2019-12-05 09:37:43
import unittest def add(a,b): return a+b import BeautifulReport as bfr #如果觉得模块BeautifulReport名字长下边不使用麻烦,可以as 后边加一个别名bfr class AddTest(unittest.TestCase): @classmethod def setUpClass(cls):#所有用例执行之前执行它 print('setUpClass') @classmethod def tearDownClass(cls):#所有用例执行之后执行它 print('tearDownClass') def setUp(self): print('setUp') #每条用例执行之前都会执行它 def tearDown(self): print('tearDown') #每条用例执行之后都会执行它 def test_normal(self): #两个测试用例 result = add(1,1) self.assertEqual(2,result) print('test_normal') def test_error(self): print('test_error') result = add(1,1) self.assertEqual(1,result,'结果计算错误') test_suite =

verbosity

不问归期 提交于 2019-12-05 07:19:47
import unittest class myTest(unittest.TestCase): def test_01(self): print("普通方法1") def test_02(self): print("普通方法2") def test_03(self): print("普通方法3") class myTest02(unittest.TestCase): def test_mytest01(self): print("类test_mytest01的方法01") def test_mytest02(self): print("类test_mytest01的方法02") if __name__ == '__main__': suite=unittest.TestLoader().loadTestsFromModule("unit01.py") unittest.TextTestRunner(verbosity=2).run(suite) verbosity有三个值:0、1、2 0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共100个 失败20 成功80 1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F” 2 (详细模式):测试结果会显示每个测试用例的所有相关的信息 加入 –quiet 参数 等效于

unittest(2)

孤街浪徒 提交于 2019-12-05 07:17:38
测试用例执行顺序 1.setUp和tearDown相关 setUp:表示前置条件,它在每一个用例执行之前必须会执行一次 setUp可以理解为我们需要自动化测试时,需要打开网页窗口,输入对应测试地址,这一些属于前置条件。 tearDown:表示释放资源,它在每次用例执行完之后会执行一次 tearDown可以理解为我们测试完毕后,需要关闭浏览器。 2.默认执行顺序 类内的普通方法执行顺序会默认按方法的字母asc码大小执行 import unittest class myTest(unittest.TestCase): def setUp(self): print("前置测试条件") def tearDown(self): print("后置测试条件") def test02(self): print("普通方法1") def test01(self): print("普通方法2") if __name__ == '__main__': unittest.main() 执行结果: (1)setUp和tearDown每执行一个方法就要执行一次 (2)普通方法的执行顺序会按方法名的asc码大小从小的开始执行 一般情况下测试用例会根据方法名的asc码大小从小的开始执行,这是最基本的执行方式也是最大的执行方式 3.TestSuite套件的使用 TestSuite可以使得用例按添加的顺序执行

unittest(1)

左心房为你撑大大i 提交于 2019-12-05 07:17:13
一、unittest核心概念 1.unittest四个核心概念 unittest四个核心概念包括:TestCase、TestSuite、TestRunner、Test Fixture TestCase:即测试用例,测试用例是最小的测试单元。 它检查对一组特定输入的特定响应。 unittest提供了一个基类TestCase,它可用于创建一个新的测试用例。 一个TestCase的实例就是一个测试用例。一个测试用例就是一个完整的测试流程,包括测试前准备环境的搭建(setUp),执行测试代码(run),以及测试后环境的还原(tearDown)。元测试(unit test)的本质也就在这里,一个测试用例是一个完整的测试单元,通过运行这个测试单元,可以对某一个问题进行验证。 TestSuite:即测试套件,他是多个测试用例或者测试套件聚合在一起的集合,TestSuite可以嵌套TestSuite。 TestRunner:TextTestRunner是来执行测试用例的,其中的run(test)会执行TestSuite/TestCase中的run(result)方法。 Test Fixture:测试用例环境的搭建和销毁,在测试用例执行之前和之后会做的一些操作 2.unittest属性 unitte包含很多属性,其中常见的属性如下: 'TestResult', 'TestCase',

[ unittest ] 使用初体验

徘徊边缘 提交于 2019-12-05 06:56:27
import unittest from cal import Calculate class Mytest(unittest.TestCase): def setUp(self): self.cal = Calculate() # print('start up...') def test_cal(self): self.assertEqual(self.cal.addit(3,2),5,'Result Wrong') def test_cal1(self): self.assertEqual(self.cal.addit(2,3),5,'Result Wrong') def tearDown(self): pass # print('End...') def suite(): suite = unittest.TestSuite() #addTests接收一个可迭代的实例,来自testcase和testsuite #基类unittest.TestCase接收methodName, suite.addTests([Mytest('test_cal'),Mytest('test_cal1')]) return suite if __name__ == '__main__': runner = unittest.TextTestRunner() runner.run(suite())

unittest参数化

让人想犯罪 __ 提交于 2019-12-05 05:09:56
import parameterized import unittest,BeautifulReport #数据驱动 data = [   ['admin','123456',True,'正常登录'],   ['admin','1122',False,'冻结用户登录'],   ['sdfsdf','1111',False,'黑名单用户登录'] ] data2 = [   ['admin','123456',True],   ['admin','1122',False],   ['sdfsdf','1111',False] ] def login(user,password):   if user=='admin' and password=='123456':     return True   return False class LoginTest(unittest.TestCase):  # 定义个类,继承unittest   @parameterized.parameterized.expand(data)    def test_login(self,user,password,expect,desc):     self._testMethodDoc = desc   # 自己指定     result = login(user,password)     self

Python之unittest参数化

坚强是说给别人听的谎言 提交于 2019-12-05 03:18:07
unittest如何做参数化呢? 我们在写case 的时候如果就是参数不同,我们只需要把参数都写到一个list里面, 然后循环去执行这个case即可。 unittest中有一个模块parameterized,可以帮我们循环,不需要自己写循环,直接pip install parameterized安装即可。 例如:一个登陆的case import parameterized import unittest,BeautifulReport data = [ ['admin','123456',True], #第三列表示预期结果 ['admin','1122',False], ['sdfsdf','1111',False] ] data1 = [ ['admin','123456',True,'正常登陆'], #第四列表示描述 ['admin','1122',False,'冻结用户登陆'], ['sdfsdf','1111',False,'黑名单用户登陆'] ] def login(user,password): if user=='admin' and password=='123456': return True return False class LoginTest(unittest.TestCase): @parameterized.parameterized.expand

Python之单元测试unittest

时光毁灭记忆、已成空白 提交于 2019-12-05 03:16:35
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,使用时需import导入。 首先了解几个概念: TestCase表示测试用例 TestSuite 表示用例集合 TestRunner 运行测试用例 TestLoader 查找测试用例 写一个单元测试的用例: import unittest def add(a,b): return a+b class AddTest(unittest.TestCase): # @classmethod # def setUpClass(cls): #所有用例执行之前都会执行它 # print('setUpClass') # # @classmethod # def tearDownClass(cls): ##所有用例执行之后都会执行它 # print('tearDownClass') # # def setUp(self): #每条用例执行之前都会执行setUp # print('setUp') # # def tearDown(self): #每条用例执行之后都会执行tearDown # print('tearDown') def test_normal(self): #在unittest里函数名需要以test开头,否则不会被认为是测试用例 result=add(1,1) self.assertEqual(2