009 python接口 断言与报告

1''' 2时间:2018/10/30 3功能:断言与报告 4目录: 5 : 测试报告 6 1 工程结构 7 2 TestCase 8 3 TestReport 9 4 common 10 5 run_all      (1) unittest生成       (2) HTMLTestRunner生成 11 : 断言使用 12'''

一: 测试报告
1 工程结构

1 :  一级目录 - 工程名称

2 :  二级目录 - 测试用例

3 :  二级目录 - 测试报告

4 :  二级文件 - 运行文件

2 TestCase

1 :  编写了两个测试case

1# coding:utf-8 2import unittest 3 4class IntegerArithmeticTestCase(unittest.TestCase): 5 ''' 测试符号计算 ''' 6 def testMultiply(self): 7 ''' 乘法计算''' 8 self.assertEqual((0 * 10), 0) 9 self.assertEqual((5 * 8), 40) 10 def testAsd(self): 11 ''' 加法计算''' 12 self.assertEqual((1 + 1), 2) 13 self.assertEqual((1 + 1), 2) 14 15if __name__ == '__main__': 16 unittest.main()

1 :  test_count.py

1# coding:utf-8 2import requests 3import unittest 4 5class TestQQ(unittest.TestCase): 6 ''' 测试QQ接口''' 7 def test_qq_right_key(self): 8 ''' key值 - 正确情况''' 9 url = "http://japi.juhe.cn/qqevaluate/qq" 10 par = { 11 "key": "980bf619855953f6ebef9abe90d52712", 12 "qq": "1812436356" 13 } 14 r = requests.get(url, params=par) 15 res = r.json() 16 17 self.assertTrue(res['reason'] == 'success') # 检查点 - 结果 18 self.assertTrue(res['error_code'] == 0) # 检查点 - 错误码 19 self.assertTrue(res['result'] != []) # 检查点 - 返回结果 20 21 22 def test_qq_error_key(self): 23 ''' key值 - 错误情况 ''' 24 url = "http://japi.juhe.cn/qqevaluate/qq" 25 par = { 26 "key": "123456789", 27 "qq": "1812436356" 28 } 29 r = requests.get(url, params=par) 30 res = r.json() 31 32 self.assertTrue(res['reason'] == 'KEY ERROR!') # 检查点 - 结果 33 self.assertTrue(res['error_code'] == 10001) # 检查点 - 错误码 34 self.assertTrue(res['result'] == []) # 检查点 - 返回结果 35 36 def test_qq_no_qq(self): 37 ''' qq - 为空 ''' 38 url = "http://japi.juhe.cn/qqevaluate/qq" 39 par = { 40 "key": "980bf619855953f6ebef9abe90d52712", 41 "qq": "" 42 } 43 r = requests.get(url, params=par) 44 res = r.json() 45 46 self.assertTrue(res['reason'] == '错误的请求参数') # 检查点 - 结果 47 self.assertTrue(res['error_code'] == 216602) # 检查点 - 错误码 48 49if __name__ == "__main__": 50 unittest.main()

1 : test_qq_api.py

3 TestReport

1 : 等run_all.py执行完毕,会生成一个report.html文件。

1 : 全部测试通过的报告。

1 : 全部测试失败的报告,可以看到失败原因。

4 common

1 : 使用第三方 HTMLTestRunner_cn.py,方便查看测试结果。

5 run_all

(1) unittest生成

1# coding:utf-8 2import unittest 3import os 4 5 6# 路径兼容 - windows/mac 7cur_path = os.path.dirname(os.path.realpath(__file__)) # 获取路径 - 当前脚本 8cur_path = os.path.join(cur_path, "TestCase") # 拼接路径 9 10# 显示结果 - unnitest 11pattern = "test*.py" # 匹配文件 12discover = unittest.defaultTestLoader.discover(start_dir = cur_path, pattern = pattern) 13print(discover) 14 15runner = unittest.TextTestRunner() 16runner.run(discover) 17 18..<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_count.IntegerArithmeticTestCase testMethod=testAsd>, <test_count.IntegerArithmeticTestCase testMethod=testMultiply>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_qq_api.TestQQ testMethod=test_qq_error_key>, <test_qq_api.TestQQ testMethod=test_qq_no_qq>, <test_qq_api.TestQQ testMethod=test_qq_right_key>]>]>]> 19... 20---------------------------------------------------------------------- 21Ran 5 tests in 0.299s 22 23OK

(2) HTMLTestRunner生成

1# coding:utf-8 2import unittest 3import os 4from common import HTMLTestRunner_cn 5 6 7# 路径兼容 - windows/mac 8cur_path = os.path.dirname(os.path.realpath(__file__)) # 获取路径 - 当前脚本 9cur_path = os.path.join(cur_path, "TestCase") # 拼接路径 10 11# 显示结果 - unnitest 12pattern = "test*.py" # 匹配文件 13discover = unittest.defaultTestLoader.discover(start_dir = cur_path, pattern = pattern) 14print(discover) 15 16 17# 路径兼容 - windows/mac 18cur_path = os.path.dirname(os.path.realpath(__file__)) # 获取路径 - 当前脚本 19report_path = os.path.join(cur_path, "TestReport", "report.html") 20 21# 显示结果 - HTMLTestRunner 22fp = open(report_path, "wb") 23runner = HTMLTestRunner_cn.HTMLTestRunner(stream = fp, # 报告路径 24 title = "接口测试用例报告", # 报告标题 25 description = "测试用例详情报告", # 报告描述 26 retry = 1, # 错误重写执行 27 verbosity = 2) # 注释显示 28runner.run(discover) 29 30<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_count.IntegerArithmeticTestCase testMethod=testAsd>, <test_count.IntegerArithmeticTestCase testMethod=testMultiply>]>]>, <unittest.suite.TestSuite tests=[<unittest.suite.TestSuite tests=[<test_qq_api.TestQQ testMethod=test_qq_error_key>, <test_qq_api.TestQQ testMethod=test_qq_no_qq>, <test_qq_api.TestQQ testMethod=test_qq_right_key>]>]>]> 31ok testAsd (test_count.IntegerArithmeticTestCase) 32ok testMultiply (test_count.IntegerArithmeticTestCase) 33ok test_qq_error_key (test_qq_api.TestQQ) 34ok test_qq_no_qq (test_qq_api.TestQQ) 35ok test_qq_right_key (test_qq_api.TestQQ) 36 37Time Elapsed: 0:00:00.304017

二: 断言使用

1常用的断言 2 assertEqual 数字相同 3 assertNotEqual 数字不同 4 5 assertFalse 条件为假 6 assertTrue 条件为真 7 8 assertIn 字符串 - 包含 9 assertNotIn 字符串 - 不包含 10 11 12 所有的测试结果判断,都可以用True和False来判断。
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )