博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python接口自动化1
阅读量:4921 次
发布时间:2019-06-11

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

组织架构:

  包括配置文件,反射、文件路径、Excel操作、测试报告生成

                        

case.config

[MODE]file_name=case_data.xlsxmode={
"register":'all',"login":'all',"recharge":'all'}

tools文件夹里的东西

do_config.py
1 # -*- conding:utr-8 -*- 2 #@Time  :2018/11/17 11:21 3 #@Author:GYP测试 4 #@File  :do_config.py 5  6 import configparser 7 class ReadConfig: 8     def read_config(self,file_name,section,option): 9         cf=configparser.ConfigParser()10         cf.read(file_name,encoding='utf-8')11         return cf.get(section,option)12 if __name__ == '__main__':13     res=ReadConfig().read_config('case.config','MODE','file_name')14     print(res)
View Code
do_excel.py
1 # -*- conding:utr-8 -*- 2 #@Time  :2018/11/17 14:05 3 #@Author:GYP测试 4 #@File  :do_excel.py 5 from openpyxl import load_workbook 6 from tools.do_config import ReadConfig 7 from tools.project_path import * 8  9 class Do_Excle:10     def __init__(self):11         self.file_name = test_data_path12         self.sheet_names = eval(ReadConfig().read_config(case_config_path, 'MODE', 'mode'))13     def get_header(self):14         wb = load_workbook(self.file_name)15         for sheet_name in self.sheet_names:16             sheet=wb[sheet_name]17             header=[]18             for i in range(1,sheet.max_column+1):19                 header.append(sheet.cell(1,i).value)20         return header21     def Read_Excle(self):22         wb = load_workbook(self.file_name)23         test_data = []24         for sheet_name in self.sheet_names:25             sheet = wb[sheet_name]26             header = self.get_header()27             if self.sheet_names[sheet_name]=='all':28                 for i in range(2,sheet.max_row+1):29                     sub_data={}30                     for j in range(1,sheet.max_column+1):31                         sub_data[header[j-1]]=sheet.cell(i,j).value32                     test_data.append(sub_data)33             else:34                 for case_id in self.sheet_names[sheet_name]:35                     sub_data={}36                     for j in range(1,sheet.max_column+1):37                         sub_data[header[j-1]]=sheet.cell(case_id+1,j).value38                     test_data.append(sub_data)39         return test_data40     @staticmethod41     def write_excel(fiel_name,sheet_name,i,ActaulResult):42         wb=load_workbook(fiel_name)43         sheet=wb[sheet_name]44         sheet.cell(i,8).value=ActaulResult45         wb.save(fiel_name)46 if __name__ == '__main__':47     res=Do_Excle().Read_Excle()48     print(res)49     print(len(res))
View Code

  get_data.py

# -*- conding:utf-8 -*-#@Time  :2018/11/19 11:37#@Author:GYP测试#@File  :get_data.pyclass Get_Data:    cookie=None
http_requests.py
1 # -*- conding:utr-8 -*- 2 #@Time  :2018/11/16 21:50 3 #@Author:GYP测试 4 #@File  :http_requests.py 5  6 import requests 7 class Http_Request: 8     def request(self,method,url,data,cookie=None): 9         try:10             if method == 'post':11                 res=requests.post(url,data,cookies=cookie)12             else:13                 res=requests.get(url,data,cookies=cookie)14         except Exception as e:15             print("非法请求,请检查{0}".format(e))16             raise e17         return res
View Code
http_test.py
1 # -*- conding:utr-8 -*- 2 #@Time  :2018/11/18 15:00 3 #@Author:GYP测试 4 #@File  :http_test.py 5  6  7 import unittest  #单元测试框架 8  9 from tools.do_excel import Do_Excle   #数据读写10 from tools.project_path import *   #文件路径11 from ddt import ddt,data  #数据处理框架12 from tools.get_data import Get_Data  #反射13 from tools.http_requests import Http_Request14 15 test_data=Do_Excle().Read_Excle()  #读取数据16 @ddt17 class TestHttp(unittest.TestCase):18     @data(*test_data)19     def test_api(self,item):20         res=Http_Request().request(item['method'],item['url'],eval(item['data']),getattr(Get_Data,'cookie'))21         if res.cookies:  #利用反射获取cookie的值22             setattr(Get_Data,'cookie',res.cookies)23         try:24             self.assertEqual(str(item['ExpectedResult']),res.json()['code'])25             ActaulResult='Pass'26         except AssertionError as e:27             print('执行用例失败,请检查%s' %e)28             ActaulResult = 'Faile'29             print("获取到的结果是:{0}".format(res.json()))30         finally:31             # print(item['case_id'])32             Do_Excle.write_excel(test_data_path,item['module'],item['case_id']+1,ActaulResult)
View Code
project_path.py
# -*- conding:utr-8 -*-#@Time  :2018/11/17 13:46#@Author:GYP测试#@File  :project_path.pyimport osfrom tools.do_config import ReadConfig# class Get_Path:#     def get_path(self):path=os.path.split(os.path.split(os.path.realpath(__file__))[0])[0]case_config_path=os.path.join(path,'conf','case.config')data_file_name=ReadConfig().read_config(case_config_path,'MODE','file_name')test_data_path=os.path.join(path,'test_data',data_file_name)html_repot_path=os.path.join(path,'test_result','html_report','test_api.html')print(case_config_path)print(html_repot_path)
View Code
run.py
1 # -*- conding:utr-8 -*- 2 #@Time  :2018/11/16 21:36 3 #@Author:GYP测试 4 #@File  :run.py 5  6 import unittest 7 import HTMLTestRunner 8 from tools.project_path import * 9 10 from tools.http_test import TestHttp11 suite=unittest.TestSuite()12 13 14 loader=unittest.TestLoader()15 16 suite.addTest(loader.loadTestsFromTestCase(TestHttp))17 18 with open(html_repot_path,'wb')  as file:19     runner=HTMLTestRunner.HTMLTestRunner(20         stream=file,21         title='这个是接口自动化的测试报告',22         description='我来测试哦!',23         tester='GYP')24     runner.run(suite)
View Code

 

 
 

 

转载于:https://www.cnblogs.com/guoyuanping/p/9983789.html

你可能感兴趣的文章
通过js获得html标签的值
查看>>
Sqoop 1.4.7安装与配置
查看>>
浅谈数据库资源使用的按需分配方法
查看>>
linux运维面试题1
查看>>
fabric网关模式文件上传与执行
查看>>
转:一千行 MySQL 学习笔记
查看>>
hadoop控制map个数(转)
查看>>
SVProgressHUD 用法
查看>>
【BZOJ】【1046】/【POJ】【3613】【USACO 2007 Nov】Cow Relays 奶牛接力跑
查看>>
Django表单
查看>>
ini 文件操作记要(2): 使用 TMemIniFile
查看>>
(第3篇)HDFS是什么?HDFS适合做什么?我们应该怎样操作HDFS系统?
查看>>
隐藏 DataGrid 中 DataSource 为 DataTable 的 DataColumn (Visual C#)
查看>>
【译 】Solr in Action 第一章
查看>>
计算几何初步模板
查看>>
POJ 数据结构(2)
查看>>
HDU 3869 Color the Simple Cycle (Polya计数法)
查看>>
String字符串常用方法
查看>>
猴子们的研究
查看>>
[Python]小甲鱼Python视频第027课(集合:在我的世界里,你就是唯一)课后题及参考解答...
查看>>