Excel文件的写入

https://openpyxl.readthedocs.io/en/stable/

安装openpyxl

使用 openpyxl 库可以进行excel文件的读写。

  1. pip install openpyxl

image.png

写入文件

  1. # 导入openpyxl模块
  2. from openpyxl import Workbook
  3. # 创建excel文件
  4. wb = Workbook()
  5. # 使用默认的worksheet
  6. ws = wb.active
  7. # 添加数据到 Excel文件中
  8. ws.append(['用户名','密码',"状态码",'期望结果'])
  9. for i in range(10):
  10. ws.append([f'test{i}',"123456",'200','ok'])
  11. # 文件保存
  12. wb.save('data.xlsx')

image.png


  1. # 导入openpyxl模块
  2. def write_data():
  3. from openpyxl import Workbook
  4. # 实例化 workbook
  5. # 创建excel文件
  6. wb = Workbook()
  7. # 使用默认的worksheet
  8. ws = wb.active
  9. # 添加数据到 Excel文件中
  10. ws.append(['用户名','密码','期望状态码','期望的message'])
  11. ws.append(['','123456','510','登录名不能为空'])
  12. ws.append(['1321111','123456','500','请输入正确的手机号!'])
  13. ws.append(['13213331333','','510','密码不能为空'])
  14. ws.append(['','','510','密码不能为空'])
  15. ws.append(['13213331333','123456','500','登录失败!'])
  16. # 文件保存
  17. wb.save('data.xlsx')

读取文件内容

  1. def read_data():
  2. # 导入读取excel文件方法
  3. from openpyxl import load_workbook
  4. # 读取文件
  5. wb = load_workbook('./data.xlsx')
  6. # 选择默认的 worksheet
  7. ws = wb.active
  8. # 循环每一行的excel文件内容,从第2行开始读取文件内容
  9. for line in ws.iter_rows(min_row=2,max_row=ws.max_row,
  10. min_col=1,max_col=ws.max_column,
  11. values_only=True):
  12. print(line)
  13. read_data()

image.png

Excel文件数据驱动

将数据从 Excel 文件中读取出来,读取出来之后,还是使用 pytest parametrize 参数化功能进行数据驱动测试即可。

  1. def read_data():
  2. # 导入读取excel文件方法
  3. from openpyxl import load_workbook
  4. # 读取文件
  5. wb = load_workbook('./data.xlsx')
  6. testdata = []
  7. # 选择默认的 worksheet
  8. ws = wb.active
  9. # 循环每一行的excel文件内容
  10. for line in ws.iter_rows(min_row=2,max_row=ws.max_row,
  11. min_col=1,max_col=ws.max_column,
  12. values_only=True):
  13. # 每读取一行数据,将数据存放在list中
  14. testdata.append(line)
  15. return testdata
  16. testdata=read_data()
  17. import pytest
  18. import requests
  19. @pytest.mark.parametrize("username,passwd,excpet_code,excpet_msg",testdata)
  20. def test_login(username,passwd,excpet_code,excpet_msg):
  21. url = "http://49.233.108.117:28019/api/v1/user/login"
  22. body = {
  23. "loginName": username,
  24. "passwordMd5": passwd
  25. }
  26. # 发送请求
  27. r = requests.post(url,json=body)
  28. print(r.json())
  29. # 添加断言 因为从csv文件中读取出来的数字,会自动被转换为字符串
  30. assert r.json()["resultCode"] == int(excpet_code) # 将csv文件中的字符串转为数字
  31. assert r.json()["message"] == excpet_msg