python3+requests库框架设计06-测试脚本
在项目下新建TestCase文件夹,然后新建.py文件在文件中写关于接口具体的测试脚本,一般我喜欢按照模块来分,一个模块一个.py文件,建议以test开头命名文件
把配置文件改成这样 url:https://www.sojson.com/open/api/weather/json.shtml
在TestCase文件夹下新建test_weathere.py文件,输入以下代码
import unittest
from Logs.log import log1
from Common.Base_test import webrequests class weather(unittest.TestCase): def test_weather(self):
'''查询天气'''
case_name = '查询天气'
log1.info("执行测试用例:%s" % case_name)
try:
weather = webrequests()#初始化测试基类的实例
url = weather.confige_get('test','url',url='')#获取配置文件中的url
payloda = {'city':'上海'}
status_code,response_json =weather.get(url,params=payloda)#调用封装的get方法,接收状态码和相应内容
message = weather.getdict(response_json,'message')#调用迭代字典方法,获得message字段的值
test1 = self.assertEqual(status_code,200)#断言状态码等于200
test2 = self.assertEqual(message,'Success !')#断言message字段的值等于'Success !'
if test1 == None and test2 ==None: #如果两个断言结果都等于None
log1.info("测试通过")
except BaseException as f :
log1.error("测试用例执行出错: %s" % case_name,exc_info=1)
raise
这里要注意的是unittests的断言结果,成功是不返回值的,也就是None,并不是True。还有使用了try...except之后,一定要raise异常。不然之后使用HTMLTestRunner生成测试报告的时候,如果执行失败,因为异常不抛出是当做正常处理了,就不会记录在失败的里面的。其实一个项目的话,请求成功没成功,可以封装成一个方法。响应内容会比较统一。当然如果要断言其他结果的还是要单独写。
在项目下新建entrance.py文件,输入以下代码并执行
import TestCase.test_weather import unittest
if __name__ == "__main__":
suite = unittest.TestSuite()
suite.addTest(TestCase.test_weather.weather('test_weather'))
runner = unittest.TextTestRunner()
runner.run(suite)
测试用例的编写都是在TestCase这个文件夹下面,而测试用例的执行数量,执行顺序是在entrance.py文件中进行配置的
现在的项目结构如下图
python3+requests库框架设计06-测试脚本的更多相关文章
- python3+requests库框架设计01-自动化测试框架需要什么?
什么是自动化测试框架 关于自动化测试框架的定义有很多,在我大致理解下就是把能实现不同功能的软件组合在一起,实现特定的目的,这就是一个简单的自动化测试框架. 接口自动化测试框架核心无非是选择 一个用来编 ...
- python3+requests库框架设计08-发送邮件
使用python3的email模块和smtplib模块可以实现发送邮件的动能.email模块用来生成email,smtplib模块用来发送邮件,接下来看如何在生成测试报告之后,并将报告放在邮件附件中并 ...
- python3+requests库框架设计05-unittest单元测试框架
unittest单元测试框架,主要由四部分组成:测试固件.测试用例.测试套件.测试执行器 测试固件(test fixture) 测试固件有两部分,执行测试前的准备部分setUp(),测试执行完后的清扫 ...
- python3+requests库框架设计04-配置文件
python3配置文件的增删改查等操作可以使用内置的ConfigParser模块,可以自行百度学习,也可以看Python3学习笔记27-ConfigParser模块 配置文件一般存放着环境信息,比如u ...
- python3+requests库框架设计03-请求重新封装
在完成了日志类封装之后,那我们就要对测试基类进行实现,在其中对一些请求再次封装,在项目下新建一个Common文件夹,在文件夹下新建Base_test.py文件,项目结构如下. 具体怎么封装还是要看被测 ...
- python3+requests库框架设计02-封装日志类
首先我们先来实现日志的功能,日志可以使用python3自带logging模块,不会的可以百度一下相关文章,也可以看我另外一篇文章Python3学习笔记24-logging模块 在封装日志类前,我们需要 ...
- python3+requests库框架设计07-生成测试报告
使用HTMLTestRunner可以生成测试报告.HTMLTestRunner是unittest模块下的一个拓展,原生的生成报告样式比较丑,GitHub上有大佬优化过后的版本:GitHub地址.下载之 ...
- 【STM32H7教程】第12章 STM32H7的HAL库框架设计学习
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第12章 STM32H7的HAL库框架设计学 ...
- python3 requests库学习笔记(MOOC网)
奏:HTTP协议对资源的操作 方法说明:GET 请求获取URL位置的资源HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息POST 请求向URL位置的资源后附加新的数据PUT 请求 ...
随机推荐
- 【MSSQL】SQL Server的日期和时间类型
参考:SQL Server的日期和时间类型 SQL Server使用 Date 表示日期,time表示时间,使用datetime和datetime2表示日期和时间. 1.秒的精度 秒的精度是指TSQL ...
- layui(六)——upload组件常见用法总结
layui中提供了非常简单的文件上传组件,这里写了一个上传图片的栗子,上传成功后返回图片在服务器的路径,并设置为页面中img的src属性.因为上传十分简单,没什么可说的,就直接上代码了. html代码 ...
- Web APi入门之Self-Host寄宿及路由原理
前言 刚开始表面上感觉Web API内容似乎没什么,也就是返回JSON数据,事实上远非我所想,不去研究不知道,其中的水还是比较深,那又如何,一步一个脚印来学习都将迎刃而解. Self-Host 我们知 ...
- Integer与int值的比较
==一般用于比较内存地址,equals()用于比较Object的值,注意int用equals()是会报错的.Integer i=1Integer k=1i.equals(k)=truei==k=tru ...
- golang cronexpr定时任务包使用
包获取 go get -u github.com/gorhill/cronexpr 创建一个定时任务 expr, err = cron.Parse("* * * * *"); 获得 ...
- 【leetcode-102,107,103】 二叉树的层次遍历
102. 二叉树的层次遍历 (1过,隐蔽错误花时间很多,简单题目本应很快,下次注意红色错误的地方) 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有节点). 例如:给定二叉树: ...
- 【转载】C# 泛型详解
https://www.cnblogs.com/yueyue184/p/5032156.html
- jsp登录注册
只帖源代码,,,,不讲解. 1.Login.jsp <%@ page language="java" import="java.util.*" pageE ...
- luogu 2296 寻找道路 简单BFS
简单的BFS,练习基础 #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<=y;i++) #defi ...
- springboot 02-PropertiesFile 自定义配置属性,多环境配置
application.properties: # 自定义配置 test.hello.world = HelloWorld test.person.name = 哈哈 test.person.sex ...