博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
接口自动化第二阶段代码
阅读量:4878 次
发布时间:2019-06-11

本文共 4741 字,大约阅读时间需要 15 分钟。

目标:

一:完成手机号码的自加,new_do_excl.py

二:集成单元测试,ddt,http请求、写回到excl,并且生成测试报告

三、增加配置文件,实现测试用例可配置

new_do_excl.py (手机号码自加)

from openpyxl import load_workbook class DoExcl:     def __init__(self, file_name):         self.file_name = file_name     def get_data(self, button, case_id_list):         file = load_workbook(self.file_name)         sheet = file["testcase"]         test_data = []         new_tel = file["tel"].cell(1, 1).value # 整数、浮点数、从Excle里面去出是整数、浮点数,字符串,列表,字典,从excl里面取出是字符串         for i in range(2, sheet.max_row+1):  # +1取左不取右,max_clumn             sub_data = {}             sub_data["id"] = sheet.cell(i, 1).value             sub_data["HttpMethod"] = sheet.cell(i, 2).value             sub_data["module"] = sheet.cell(i, 3).value             sub_data["description"] = sheet.cell(i, 4).value             sub_data["url"] = sheet.cell(i, 5).value             if sheet.cell(i, 6).value.find('${tel}') != -1:                 sub_data['param'] = sheet.cell(i, 6).value.replace('${tel}', str(new_tel))             else:                 sub_data["param"] = sheet.cell(i, 6).value             sub_data["ExpectedResult"] = sheet.cell(i, 7).value             test_data.append(sub_data)             file["tel"].cell(1, 1).value = new_tel+1             file.save(self.file_name)         if button == 'on':             finally_data = test_data         else:             finally_data = []             for item in test_data:                 if item['id'] in eval(case_id_list):                     finally_data.append(item)         # print(test_data)         return finally_data     def write_back(self, row, ActualResult, TestResult):         wb = load_workbook(self.file_name)         sheet = wb["testcase"]         sheet.cell(row, 8).value = ActualResult         sheet.cell(row, 9).value = TestResult         wb.save(self.file_name) # if __name__ == '__main__': #     test_data = DoExcl('api.xlsx').get_data() #     print("测试数据是:{}".format(test_data)) test_api.py(集成单元测试,ddt装饰,读取配置文件实现用例执行可以配置,批量写回结果)
import unittest from ddt import ddt, data from class_2019_API_unnitest.new_do_excle import DoExcl from class_2019_API_unnitest.http_request import HttpMethod from class_2019_API_unnitest.read_config import ReadConfig button = ReadConfig().read_config("case.config", "CONFIG", "button") case_id_list = ReadConfig().read_config("case.config", "CONFIG", "case_id_list") test_data = DoExcl("api.xlsx").get_data(button, case_id_list)
# 读取配置控制执行哪条测试用例,实际上是对测试数据的读取进行配置
@ddt class TestApi(unittest.TestCase):     def setUp(self):         self.t = DoExcl("api.xlsx")         print("开始测试")     @data(*test_data)     def test_api(self, data_item):         print("正在执行第{0}条测试用例{1}".format(data_item['id'],data_item['description']))         print("测试数据是{0}".format(data_item['param']))         url = 'http://47.107.168.87:8080/futureloan/mvc/api/member/register'         res = HttpMethod().http_request(url, eval(data_item['param']), data_item['HttpMethod'])  # eval()函数将字符串转换成字典         try:             self.assertEqual(str(data_item["ExpectedResult"]),res['code'])             TestResult = 'PASS'         except AssertionError as e:             TestResult = 'failed'             raise e         finally:             self.t.write_back(data_item["id"]+1, res['code'], TestResult) # 将结果批量写回到excl     def tearDown(self):         print("测试结束了") http_request.py import requests
class HttpMethod:     def http_request(self,url,param,http_method):         if http_method.upper() =='POST':             try:                 res = requests.post(url, param)             except Exception as e:                 print("post注册请求出错,错误是{}".format(e))         else:             try:                 res = requests.get(url, param)             except Exception as e:                 print("post注册请求出错,错误是{}".format(e))         print("http请求的结果是{}".format(res.json()))         return res.json()  # 增加返回值,在请求正常的情况下有返回值
read_config.py
from configparser import ConfigParser class ReadConfig:     def read_config(self, filename, section, option):         cf = ConfigParser()         cf.read(filename)         value = cf.get(section, option)         return value if __name__ == '__main__':     ReadConfig().read_config("case.config", "CONFIG", "button") case.config
[CONFIG] button=on case_id_list=[1,3] run.py(单元测试执行测试用例)
import unittest from class_2019_API_unnitest.common import test_api import HTMLTestRunnerNew suite = unittest.TestSuite()#测试容器 loader = unittest.TestLoader()# 执行测试用例 suite.addTest(loader.loadTestsFromModule(test_api)) #按照模块执行 with open ('test_result.html', "wb+") as file:  # 测试报告     runner = HTMLTestRunnerNew.HTMLTestRunner(file, title='测试报告', description='软件测试', tester='林越')     runner.run(suite)
 
 
 
 
 
 

转载于:https://www.cnblogs.com/lin-yue/p/10303341.html

你可能感兴趣的文章
数据结构_Python语言描述(英)pdf
查看>>
HTML5权威指南----读书笔记
查看>>
Swig--模板引擎
查看>>
OpenCV中Camshitf算法学习(补充)
查看>>
java基础面试题常出现(一)
查看>>
C# 中奇妙的函数–5. Nullable 静态类
查看>>
Windows 程序 HelloWorld
查看>>
1.1 Python是一种什么样的语言
查看>>
Spring Boot (十):邮件服务
查看>>
angular4 使用window事件【转】
查看>>
cJSON使用
查看>>
读书笔记:《C#与.NET4高级程序设计》-核心部分
查看>>
HDU 2100 LoveKey
查看>>
PAT L2-019 悄悄关注
查看>>
HDU 2039 三角形
查看>>
Softmax实现 fashion.mnist 分类
查看>>
统计学习-朴素贝叶斯法
查看>>
学习进度17
查看>>
编译原理——算符优先分析文法(附源代码)
查看>>
jboss的启动过程
查看>>