unittest(13)- 从配置文件中读取测试数据
case.config

# 1. http_request.py
import requests
class HttpRequest:
def http_request(self, url, method, data=None, cookie=None):
try:
if method.upper() == "GET":
res = requests.get(url, data, cookies=cookie)
elif method.upper() == "POST":
res = requests.post(url, data, cookies=cookie)
else:
print("请输入正确的参数")
except Exception as e:
print("请求报错了:{}".format(e))
raise e
return res
# 2.get_data7.py
from openpyxl import load_workbook
from day_20191202.config_data_depart.read_config import ReadConfig
class DoExcel:
def __init__(self, file, sheet):
self.file = file
self.sheet = sheet
def get_data(self, mode="all"):
mode = ReadConfig().get_config("case.config", "MODE", "mode")
wb = load_workbook(self.file)
sheet = wb[self.sheet]
case_data = []
for i in range(2, sheet.max_row+1):
sub_data = {}
sub_data["case_id"] = sheet.cell(i, 1).value
sub_data["url"] = sheet.cell(i, 2).value
sub_data["method"] = sheet.cell(i, 3).value
sub_data["data"] = eval(sheet.cell(i, 4).value)
sub_data["expected"] = sheet.cell(i, 5).value
case_data.append(sub_data)
if mode == "all":
final_data = case_data
else: # [1, 2, 5]
final_data = []
for test_data in case_data: # 遍历每一条测试数据,如果测试数据的id在传入的列表中,就把这条数据加到final_data
if test_data["case_id"] in eval(mode):
final_data.append(test_data)
return final_data
if __name__ == "__main__":
case_data = DoExcel("data_7.xlsx", "sh2").get_data()
print(case_data)
# 3. read_config.py
import configparser
class ReadConfig:
def get_config(self, file, section, option):
cf = configparser.ConfigParser()
cf.read(file, encoding="utf-8")
return cf.get(section, option)
if __name__ == "__main__":
r = ReadConfig().get_config("case.config", "MODE", "mode")
print(r)
# 4. test_login.py
import unittest
from API_AUTO.tools.http_request import HttpRequest
from ddt import ddt, data, unpack
from day_20191202.config_data_depart.get_data7 import DoExcel
from day_20191202.config_data_depart.read_config import ReadConfig
# 自定义取某几条数据执行用例
# mode = ReadConfig().get_config("case.config", "MODE", "mode")
test_data = DoExcel("data_7.xlsx", "sh2").get_data()
# print(test_data)
@ddt
class TestLogin(unittest.TestCase):
def setUp(self):
print("start testing...")
def tearDown(self):
print("case done.")
@data(*test_data)
@unpack
# 注意新的表格数据多了id,要用参数来接收case_id
def test_api(self, case_id, url, method, data, expected):
# print("url:", url)
# print("method", method)
# print("data_c", data)
res = HttpRequest().http_request(url, method, data)
r = res.json()["info"]
try:
self.assertEqual(r, expected)
except AssertionError as e:
print("there is an error in the case {}".format(e))
raise e
if __name__ == '__main__':
TestLogin().test_api()
# 5. run.py
import unittest
from day_20191202.config_data_depart.class_test_ddt import TestLogin
import HTMLTestRunner
suite = unittest.TestSuite()
loader = unittest.TestLoader()
suite.addTest(loader.loadTestsFromTestCase(TestLogin))
with open("login7.html", "wb") as file:
runner = HTMLTestRunner.HTMLTestRunner(stream=file,
verbosity=2,
title="登录7测试报告",
description="管住心情,就是胜利")
runner.run(suite)
# runner = unittest.TextTestRunner(verbosity=2)
# runner.run(suite)
unittest(13)- 从配置文件中读取测试数据的更多相关文章
- Feign从配置文件中读取url
Feign的url和name都是可配置的,就是从配置文件中读取的属性值,然后用占位符引用就可以了: ${rpc.url} @FeignClient(name = "me", url ...
- spring boot: 从配置文件中读取数据的常用方法(spring boot 2.3.4)
一,从配置文件中读取数据有哪些方法? 通常有3种用法: 1,直接使用value注解引用得到配置项的值 2, 封装到Component类中再调用 3, 用Environment类从代码中直接访问 生 ...
- 【Python学习笔记七】从配置文件中读取参数
将一些需要更改或者固定的内容存放在配置文件中,通过读取配置文件来获取参数,这样修改以及使用起来比较方便 1.首先是配置文件的写法如下一个environment.ini文件: 里面“[]”存放的是sec ...
- spring boot 项目从配置文件中读取maven 的pom.xml 文件标签的内容。
需求: 将pom.xml 文件中的版本号读取到配置文件并打印到日志中. 第一步: 在pom.xml 中添加以下标签. 第二步: 将version 标签的值读取到配置文件中 这里使用 @@ 而不是 ...
- 监听tomcat服务器启动/关闭并从配置文件中读取参数进行初始化
监听tomcat服务器启动/关闭很简单(2步): 1. 建立一个类实现ServletContextListener接口,重写其中的方法(contextDestroyed和contextInitiali ...
- C# 从配置文件中读取/写入信息
读取: var currMemberID = System.Configuration.ConfigurationManager.AppSettings["tolunaMemberID&qu ...
- 从配置文件中读取数据获取Connection
配置文件 db.driver=com.mysql.jdbc.Driver db.url=jdbc\:mysql\://localhost\:3306/mybase db.user=root db.ps ...
- 在ASP.NET 5中读取配置文件
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 在ASP.NET 5中摒弃了之前配置文件的基础结构,引入了一个全新配置文件系统.今天推荐的文 ...
- java 如何从配置文件(.properties)中读取内容
1.如何创建.properties文件 很简单,建立一个txt文件,并把后缀改成.properties即可 2.将.properties文件拷入src的根目录下 3..properties文件内容格式 ...
随机推荐
- 17.3.12----math模块
1----math模块提供很多的数学运算功能: math.pi 圆周率 math.e 那个自然常熟就是e^x,的这个e math.ceil(i) 对i向上取整 math.floor(i) ...
- LeetCode No.163,164,165
No.163 FindMissingRanges 缺失的区间 题目 给定一个排序的整数数组 nums ,其中元素的范围在闭区间 [lower, upper] 当中,返回不包含在数组中的缺失区间. 示例 ...
- android设备内部添加apn信息
由于工作原因今天需要给多台android设备中写入某张sim卡的apn相关信息,虽然可以通过sqlite命令写sql语句来写入到设备中,但设备一多起来就太低效了,所以在学习的过程中摸索着写了一个将ap ...
- python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)
默认参数:定义函数的时候给定变量一个默认值. def num(age=1): 位置参数:调用函数的时候根据定义函数时的形参位置和实参位置进行引用. 关键字参数:如果定义的函数中含有关键字参数,调用函数 ...
- [原]调试实战——程序CPU占用率飙升,你知道如何快速定位吗?
原调试debugwindbghangprocess explorer 前言 如果我们自己的程序的CPU Usage(CPU占用率)飙升,并且居高不下,很有可能陷入了死循环.你知道怎么快速定位并解决吗? ...
- ajax使用json数组------前端往后台发送json数组及后台往前端发送json数组
1.引子 Json是跨语言数据交流的中间语言,它以键/值对的方式表示数据,这种简单明了的数据类型能被大部分编程语言理解.它也因此是前后端数据交流的主要方式和基础. 2.前端往后台传输json数据 第一 ...
- Java虚拟机(JVM) - 学习总结(全)
深入理解java虚拟机---学习总结: 1.Java内存区域 1.1 java运行时数据区 Java 虚拟机所管理的内存如下图所示,基于JDK1.6. 基于jdk1.8画的JVM的内存模型 (1) 程 ...
- org.springframework.web.util.UriComponentsBuilder
import org.springframework.web.util.UriComponentsBuilder; UriComponentsBuilder.fromHttpUrl("htt ...
- [LC] 273. Integer to English Words
Convert a non-negative integer to its english words representation. Given input is guaranteed to be ...
- shiro PermissionUtil
package org.linlinjava.litemall.admin.util; import org.apache.shiro.authz.annotation.RequiresPermiss ...