unittest

python ddt实现数据驱动

青春壹個敷衍的年華 提交于 2019-12-10 17:51:27
ddt是第三方模块,需安装,pip install ddt,ddt包含类的装饰器ddt和两个方法装饰器data(直接输入测试数据),通常情况下,data中的数据按照一个参数传递给测试用例,如果data中含有多个数据,如元组,列表,字典等数据,需要自行在脚本中对数据进行分解或者使用unpack分解数据 import unittestfrom ddt import data, unpack, ddt@ddtclass MyTesting(unittest.TestCase): def setUp(self): print('this is setUp') # @data(a,b),那么a和b各运行一次用例,下面的代码会打印出this is setUp,1,this is setUp,2,this is setUp,3 @data(1, 2, 3) def test_1(self, value): print(value) # 如果没有@unpack,那么[a,b]当成一个参数传入用例运行,如果有@unpack,那么[a,b]被分解开,按照用例中的两个参数传递 @data([3, 2, 1], [5, 3, 2], [10, 4, 6]) @unpack def test_minus(self, a, b, expected): actual = int(a) - int(b)

接口测试-unittest_skip

…衆ロ難τιáo~ 提交于 2019-12-10 12:10:51
unittest_skip """ @unittest.skip(reason) reason描述为跳过原因 无条件的跳过被装饰的测试 @unittest.skipIf(condition,reason) 条件为真跳过 @unittest.skipUnless(condition,reason) 条件为假跳过 """ 来源: https://www.cnblogs.com/zhangshan33/p/12015821.html

python接口自动化9-ddt数据驱动

邮差的信 提交于 2019-12-09 23:29:19
前言 ddt:数据驱动,说的简单一点,就是多组测试数据,比如点点点的时候登录输入正常、异常的数据进行登录。 实际项目中,自动化测试用得很少,但也有人用excel来维护测试数据 一、ddt 1、安装:pip install ddt (我这里已经安装过了) C:\Users\Administrator>pip install ddt Requirement already satisfied: ddt in d:\path_python\lib\site-packages (1.2.1) 2、先看下我们以前正常登录禅道的传参。登录需要账号与密码,现在只有一组数据,那么ddt就可以做到多组数据执行。(这里让你自己来) # 登录 s = requests.session() login_url = 'http://127.0.0.1/zentao/user-login.html' pr = { 'account': 'admin', 'password': '123456', } login_r = s.post(login_url, params=pr) # 传 params 参数 # 断言是否登录成功 r1 = s.get('http://127.0.0.1/zentao/doc-browse-1-byModule-0-id_desc-doc.html') if '产品主库' in

python+selenium实现发送一封带附件的邮件

我的梦境 提交于 2019-12-09 23:24:28
163邮件登录首页 登录成功断言是否有退出按钮 点击退出退出登录 from selenium import webdriver import unittest import time class VisitSogouByChrome(unittest.TestCase): def setUp(self): # 启动Chrome浏览器 self.driver = webdriver.Chrome(executable_path = "e:\\chromedriver.exe") def test_sendEmail(self): # 访问163邮箱的首页 self.driver.get("https://mail.163.com/") # 打印当前网页的网址 self.driver.maximize_window() #点击密码登录 self.pwd_link = self.driver.find_element_by_xpath("//a[text()='密码登录']") self.pwd_link.click() #找到登录框的iframe login_input_iframe = self.driver.find_element_by_xpath("//iframe[contains(@id,'x-URS-iframe')]") # 切换进登录框的iframe self

接口测试-unittest-TestSuite套件

試著忘記壹切 提交于 2019-12-09 21:16:54
unittest-TestSuite套件 1.什么是TestSuite套件 可组合测试case ,常用的方法是addTest,可用于执行单个测试用例 2.框架:添加方法运行 import unittest class TestAdd(unittest.TestCase): def setUp(self): # 所有的用例前执行,用于初始化部分 print('开始') def test_01(self): # 必须是test开头 print('第一个') def test_02(self): print('第二个') a = 1 b = 2 c = a + b self.assertEqual(c, 3, msg='不符合预期') print('c=', c, '实际结果符合预期') def test_03(self): print('第三个') a = 1 b = 3 c = a + b self.assertEqual(c, 3, msg='不符合预期') print('c=', c, '实际结果符合预期') def tearDown(self): # 所有用例结束后执行,用于清理后的工作 print('结束') if __name__ == '__main__': suite = unittest.TestSuite() # 固定写法 suite.addTest(TestAdd

Python unittest(PyUnit)单元测试框架

喜欢而已 提交于 2019-12-09 19:33:56
PyUnit(unittest) 是 Python 自带的单元测试框架,用于编写和运行可重复的测试。PyUnit 是 xUnit 体系的一个成员,xUnit 是众多测试框架的总称,PyUnit 主要用于进行白盒测试和回归测试。 如果你使用的是 2.1 或更早版本的 Python,则可能需要自行下载和安装 PyUnit,现在的开发者通常不需要操心这些事情。 通过 PyUnit 可以让测试具有持久性,测试与开发同步进行,测试代码与开发代码一同发布。使用 PyUnit 具有如下好处: 可以使测试代码与产品代码分离。 针对某一个类的测试代码只需要进行较少的改动,便可以应用于另一个类的测试。 PyUnit 开放源代码,可以进行二次开发,方便对 PyUnit 的扩展。 PyUnit 是一个简单、易用的测试框架,其具有如下特征: 使用断言方法判断期望值和实际值的差异,返回 bool 值。 测试驱动设备可使用共同的初始化变量或实例。 测试包结构便于组织和集成运行。 PyUnit (unittest) 的用法 所有测试的本质其实都是一样的,都是通过给定参数来执行函数,然后判断函数的实际输出结果和期望输出结果是否一致。 PyUnit 测试与其他 xUnit 的套路一样,基于断言机制来判断函数或方法的实际输出结果和期望输出结果是否一致,测试用例提供参数来执行函数或方法,获取它们的执行结果

python之ddt模式随记二

旧时模样 提交于 2019-12-09 19:04:02
前言:之前记录了一次ddt模式的简单使用,这次再介绍一下ddt的多数据使用。 需求:有的时候你需要用到的数据是一个整体的可迭代数据,而你每条用例里面只需要这个数据中的一个数据。这时ddt也可以解决。 比如你有{"a":1,"b":2,"c":3},这些数据是你从各个地方读取到的,然后你要用这个给ddt去传值,但是你想执行3次,每次依次传值。 废话不多说,直接上代码 import ddt,unittest dict1 = {"a":1,"b":2,"c":3} list1 = [1,2,3,"a",{"b":"1"}] tuple1 = (1,2,3,4,"a") @ddt.ddt class Test(unittest.TestCase): ## 直接传入 @ddt.data(dict1) def test(self,d1): print(d1) @ddt.data(list1) def test1(self,l1): print(l1) @ddt.data(tuple1) def test2(self,t1): print(t1) if __name__ == '__main__': unittest.main() 上面的代码就是直接把整个的参数全部推进去了。但是现在是需要各个参数里面每个值作为一次参数去执行一下,前面学习过多次执行的方法,如下 import ddt

接口测试-unittest框架

本秂侑毒 提交于 2019-12-09 18:48:31
unittest框架 1.什么是unittest框架 是python内置的单元框架,可以完成单元测试,也可以完成自动化测试 2.下载安装 内置的无需下载,直接导入 import unittest 3.搭建框架 import unittest class TestAdd(unittest.TestCase): ''' setUp 和 tearDown 可写可不写 写了 就每次执行每个用例前后都会执行这两个函数 ''' def setUp(self): # 所有的用例前执行,用于初始化部分 print('开始') def test_01(self): # 必须是test开头 print('第一个') def test_02(self): print('第二个') a=1 b=2 c=a+b self.assertEqual(c,3,msg='不符合预期') print('c=' , c,'实际结果符合预期') def test_03(self): print('第三个') a=1 b=3 c=a+b self.assertEqual(c,3,msg='不符合预期') print('c=' , c,'实际结果符合预期') def tearDown(self): # 所有用例结束后执行,用于清理后的工作 print('结束') if __name__ == '__main__':

接口测试-requests+unittest实例

試著忘記壹切 提交于 2019-12-09 17:25:40
requests+unittest实例 1.将requests封装成unittest 继续requests实例,再创建一个py文件 'unittest_requests' import unittest import res class MyUnit(unittest.TestCase): def test_get(self): res1 = obj.get( full_url='http://localhost:8888/book_info', params_dict={'bookname': '软件测试', 'checkstatus': 'on'}, headers_dict={}, ) # 封装的方法 error_code = res1['error_code'] self.assertEqual(error_code, 0, msg='与预期不符应为"0"') print('符合预期') def test_post_forms(self): res2 = obj.post_forms( full_url='http://localhost:8888/login', data1={"username": "zhangshan", "password": "123456"}, headers_dict={'content_type': 'application/x-www

unittest

拈花ヽ惹草 提交于 2019-12-08 20:21:24
unittest 简介 unittest是python自带的单元测试框架 重要概念 1)test fixture 用于初始化和清理测试数据及环境 2)test case 测试用例,是测试的最小单元,一般用来检查一组输入的相应是否符合预期, 3)test suite 测试套件,是测试用例或测试套件的组合,一般用来把需要一起执行的测试用例组合到一起 4)test runner 用于运行测试用例并返回结果 主要作用 (1)提供用例组织代码与执行 当有大量测试用例时,要考虑其扩展性与维护性,考虑用例的规范与组织,使测试更加规范和简单 (2)提供丰富的比较方法 (3)提供丰富的日志 案例 来看一个例子 cal.py class Calculator: def __init__(self, a, b): self.a = a self.b = b def add(self): return self.a + self.b def sub(self): return self.a - self.b test.py import unittest from cal import Calculator class TestCal(unittest.TestCase): def setUp(self): print('Test begin...') self.cal = Calculator(2, 3