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文件内容格式 ...
随机推荐
- 01 语言基础+高级:1-8 File类与IO流_day10【缓冲流、转换流、序列化流】
day10[缓冲流.转换流.序列化流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本用法 能 ...
- Android Studio 停靠模式(Docked Mode)
如果之前选了任务一种模式,先全都取消了 然后点击Window -->Active Tool Window-->这个时候就可以选择Docked Mode了
- 884A. Book Reading#抽空学习好孩子(模拟)
题目出处:http://codeforces.com/problemset/problem/884/A 题目大意:每天时间分两部分,工作和学习,工作优先,闲暇读书,问第几天读完 #include< ...
- windows之anaconda导入torch失败和pip install命令执行read time out
昨天用jupyter导入torch还好好的呢,今天用就不行了,先是ImportError: DLL load failed: 找不到指定的模块.再是No such comm target regist ...
- gcc -E xx.c
C语言代码在交给编译器之前,会先由预处理器进行一些文本替换方面的操作,例如宏展开.文件包含.删除部分代码等. 在正常的情况下,GCC 不会保留预处理阶段的输出文件,也即.i文件.然而,可以利用-E选项 ...
- Spark宽依赖、窄依赖
在Spark中,RDD(弹性分布式数据集)存在依赖关系,宽依赖和窄依赖. 宽依赖和窄依赖的区别是RDD之间是否存在shuffle操作. 窄依赖 窄依赖指父RDD的每一个分区最多被一个子RDD的分区所用 ...
- SAP AM:固定资产采购的预算管理
对于很多公司来说,购买资产是公司年度支持的主要部分,因此需要用预算管理来防止过度支出.这项支出被列为资本支出,所以很多公司都需要对购买过程和安全防范进行良好的控制.以下文中说明如何在购买资产时使用预算 ...
- springboot的linux-docker部署
将springboot jar应用打包成镜像并在docker运行成容器 https://blog.csdn.net/keepd/article/details/80569797 Docker安装(De ...
- 01 语言基础+高级:1-7 异常与多线程_day07 【线程池、Lambda表达式】
day07[线程池.Lambda表达式] 主要内容 等待与唤醒案例 线程池 Lambda表达式 教学目标 -[ ] 能够理解线程通信概念-[ ] 能够理解等待唤醒机制-[ ] 能够描述Java中线程池 ...
- Python语言学习:pyc是什么
一.pyc 1.PyCodeObject:是python编译器真正编译成的结果 当python程序运行时,编译的结果是保存在位于内存中的PyCodeObject中.当python程序运行结束时,pyt ...