51Testing软件测试论坛

标题: requests通过excel读取测试用例 [打印本页]

作者: lsekfe    时间: 2021-4-16 09:41
标题: requests通过excel读取测试用例
前言
  编写正常的[url=]测试[/url]用例,一般都是通过excel进行编写的,当我们进行编写自动化测试用例的时,也是通过功能用例进行编写的,那么有没有方法直接通过python读取我们的excel然后完成自动化测试用例编写。

  整体思路
  1.通过Excel编写测试用例,整理测试数据;
  2.通过Python读取Excel数据;
  3.将读出来的数据进行放入到requests中进行请求并做对应断言。
  整体思路其实很简单,就是通过python读取Excel然后在导入我们的requests中进行做接口自动化。

  通过Excel编写用例
  安静在网上找了一些开源的接口进行编写到Excel中,由于接口比较简单,就写了用例标题、url地址、请求方法、请求参数、预期结果等操作。


  读取Excel
  在python读取Excel的方法有很多,这里安静就介绍最常用的库  xlrd  xlrd可以进行完成对Excel的读取。xlrd属于Python的第三方库,需要重新安装。

  安装:
pip install xlrd


  通过上面的Excel通过Excel完成读取操作。
import xlrd
# 将excel进行实例化
book = xlrd.open_workbook('E:\\web\\123.xlsx')
# 通过下标方法读取sheet值
sheet = book.sheet_by_index(0)
# 通过name值进行读取sheet
# sheet = book.sheet_by_name('Sheet1')
# 获取列表的总数
nrows = sheet.nrows
# 循环读取每行数据
for i in range(1, nrows):
    # 通过每行进行读取数据
    # print(sheet.row_values(i))
    # 讲数据通过组合成dic+t格式
    data = dict(zip(sheet.row_values(0), sheet.row_values(i)))
    print(data)




  安静在上面简单的介绍了读取数据的方法,上述代码中通过字典的形式获取到了excel的全部数据内容。
  PS:这里通过字典的形式获取为了下面使用时好取值。


  request请求用例
  前面已经把用例需要用到的数据都已经存储下来了,那么接下来的就是需要进行发送请求。
  这里通过requests的方式进行发送请求。先将requests请求进行简单的封装。通过把请求方式、请求类型、请求参数放入到requests中。
def Requests_result(item):
  # 封装request请求,并读取数据
    response = requests.request(
            method=item['method'],
            url=item['url'],
            data=json.loads(item['body'])
        )
    result = response.json()['reason']
    # 这里返回实际结果是否和预期值一样
    return result == item['expect']




  整体代码
  pytest
  上面已经将各个部分的内容都简单的做了介绍了,这里就直接上整体代码,这里通过requests+pytest+excel进行完成的读取excel数据完成测试用例。
import xlrd
import requests
import json
import pytest
def Read_Excel():
    # 将excel进行实例化
    book = xlrd.open_workbook('E:\\web\\123.xlsx')
    # 通过下标方法读取sheet值
    sheet = book.sheet_by_index(0)
    # 循环读取每行数据
    return [dict(zip(sheet.row_values(0), sheet.row_values(row))) for row in range(1, sheet.nrows)]

class Test_01:
    def Requests_result(self, item):
        # 封装请求
        response = requests.request(
                method=item['method'],
                url=item['url'],
                data=json.loads(item['body'])
            )
        result = response.json()['reason']
        print(result)
        return result == item['expect']
    # 通过参数化的方式进行导入excel的数据
    @pytest.mark.parametrize('item', Read_Excel())
    def test_01(self, item):
        response_result = self.Requests_result(item)
        # 断言请求返回的结果是否为True
        assert response_result == True

if __name__ == '__main__':
    pytest.main(['-vs'])




  通过执行发现,我们的requests已经通过excel来完成了测试读取测试用例。并通过单元测试-pytest完成了判断是否通过。


  unittest
  上述方法是通过pytest来完成的,那么unittest当然也可以完成。这里通过requests+unittest+ddt+excel进行来完成读取数据内容。
import xlrd
import requests
import json
import unittest
import ddt
def Read_Excel():
    # 将excel进行实例化
    book = xlrd.open_workbook('E:\\web\\123.xlsx')
    # 通过下标方法读取sheet值
    sheet = book.sheet_by_index(0)
    # 循环读取每行数据
    return [dict(zip(sheet.row_values(0), sheet.row_values(row))) for row in range(1, sheet.nrows)]
@ddt.ddt
class Test_01(unittest.TestCase):
    def Requests_result(self, item):
        response = requests.request(
                method=item['method'],
                url=item['url'],
                data=json.loads(item['body'])
            )
        result = response.json()['reason']
        return result
    # 通过ddt进行读取数据
    @ddt.data(*Read_Excel())
    def test_01(self, data):
        response_result = self.Requests_result(data)
        self.assertTrue(response_result)

if __name__ == '__main__':
    unittest.main()




  执行发现,通过unittest的也成功的读取了excel的数据以及完成了接口内容。

  总结
  这里安静简单的介绍了如何通过python进行读取excel的方法从而实现了接口自动化的类似操作,当然如何运用到公司项目中,这个要看根据公司的项目来做了。





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2