码迷,mamicode.com
首页 > 其他好文 > 详细

学习接口自动化后的总结(一)

时间:2019-09-05 18:42:36      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:取数据   turn   exce   com   类型   ext   测试数据   err   self   

一、1.首先学习接口自动化需要具备的知识:

  (1)python基础知识:

    掌握数据类型:字符串、列表、字典、数值及函数、类和面向对象编程的思想

  (2)学习requests库

  (3)读取测试用例需要用到Excel,所以还需要掌握python的openpyxl或者xlrd去封装获取数据的方法

  (4)unittest单元测试

  (5)loging日志模块的封装

  (6)jenkins做持续集成

 

  2.接口自动化框架的实现思路

   (1)首先我们需要封装一个requests的方法支持‘post’、‘get’请求方式(code):

    技术图片

 

 

    (2)有了请求接口的方法了之后需要写测试用例用到了unittest    class Test_Login(unittest.TestCase):


# def __init__(self,methodName,url,method,expected,data=None):
# super(Test_Login,self).__init__(methodName)
# self.methodName = methodName
# self.url = url
# self.method = method
# self.data = data
# self.expected = expected

def setUp(self) -> None:
print(‘>>>>>>>>>开始了‘)
self.re = HttpRequests()

def tearDown(self) -> None:
print(‘>>>>>>>>>>>结束了‘)

@data(*test_data)
def test_login_01(self,item):
‘‘‘
账号密码正确登录
:return:
‘‘‘
# res = self.re.run_method(self.url,self.method,self.data,getattr(Get_data,‘cookie‘)) # 第一种方法 通过初始化取值
res = self.re.run_method(item[‘url‘],item[‘request_method‘],eval(item[‘data‘]),getattr(Get_data,‘cookie‘)) # 第二种方法 通过ddt取值
# res = self.re.run_method(test_data[‘url‘],‘post‘,test_data[‘data‘],getattr(Get_data,‘cookie‘)) # 调试用的数据
if res.cookies:
setattr(Get_data,‘cookie‘,res.cookies) # 反射
try:
# self.assertEqual(res[‘message‘],self.expected,‘测试未通过‘)
self.assertEqual(item[‘expected‘],res.json()[‘message‘],‘测试未通过‘)
except AttributeError as e:
print("出错啦: %s" % e)
    
    如上代码采用了ddt读取测试数据的方式所以我们需要封装一个读取数据的类我们用openpyxl模块
    unittest:
          
setUp(self)、
tearDown(self):测试用例执行前后的初始化工作
          self.
assertEqual:用来断言预期结果与实际结果
    
    3.封装读取测试数据的方法openpyxl
    技术图片

 

     首先我们在Do_Excel里面初始化传参file_name(文件名), sheet_name(工作表名):

    接下来又分别封装了两个方法:get_header(self)、get_data(self)

    get_header()这个方法用来读取我们测试用例的标题行

技术图片

 

 

 

    get_data(self)这个方法用于获取我们的所有行并根据行对应的列取值:i,j代表行、列
    4.现在我们能够通过从Excel中获取数据了获取后的数据是:[{"key":"value"},{"key":"value"}]列表里面嵌套了字典
      现在有两种方法进行数据的读取,第一种方法是:上面第二步的ddt方式读取测试数据
      另外一种方法是:
需要将unittest测试用例类Test_Login用超继承的方式super()来初始化并保留父类的方法

      class Test_Login(unittest.TestCase):    
        def __init__(self,methodName,url,method,expected,data=None):
      super(Test_Login,self).__init__(methodName)
      self.methodName = methodName
      self.url = url
      self.method = method
      self.data = data
      self.expected = expected
    5.创建一个run.py运行所有测试用例:
      # 导入测试用例类
      
from run_method.Test_login import Test_Login
      # 导入Excel方法
      from run_method.do_excel import Do_Excel
      # 导入单元测试unittest      
      import unittest

      
test_data = Do_Excel(‘python_data.xlsx‘,‘py‘).get_data() # 从Excel读取测试数据
  
      suit = unittest.TestSuite()
      suit.addTest(Test_Login(‘test_login_01‘,item[‘url‘],item[‘request_method‘],item[‘expected‘],eval(item[‘data‘])))
      suit.addTest(Test_Login(‘test_login_02‘))
      
run = unittest.TextTestRunner()
      run.run(suit)
     6.以上基本实现了用例从Excel中读取后来运行测试用例,接下来该实现用例报告的生成了这时候我们需要引入
HTMLTestRunner这个文件:
       
      修改上面的run.py文件:
      
      test_data = Do_Excel(‘python_data.xlsx‘,‘py‘).get_data() # 从Excel读取测试数据
  
      suit = unittest.TestSuite()
      suit.addTest(Test_Login(‘test_login_01‘,item[‘url‘],item[‘request_method‘],item[‘expected‘],eval(item[‘data‘])))
      suit.addTest(Test_Login(‘test_login_02‘))
      with open(‘./report.html‘,‘wb‘) as f:
      run = HTMLTestRunner(stream=f,
title=‘login测试用例‘,
description=‘登录测试报告‘,
verbosity=2
)
       run.run(suit)
      这样简单的一个接口自动化框架已实现后续还会遇到数据依赖的问题,刚刚学到这块等学完在做笔记

养成良好的笔记习惯有助于复习及加深熟练,测试路程任重而道远,盼君与我一路同行共同进步

      
 
 
 
 

    

  

学习接口自动化后的总结(一)

标签:取数据   turn   exce   com   类型   ext   测试数据   err   self   

原文地址:https://www.cnblogs.com/dumingxu/p/11468698.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!