前言
很久之前就打算把接口自动化的文章写了,拖了这么久。现在终于有时间总结一下了,简单来说我采用的是读取Excel文档中的接口参数运行case。主要使用参数化paramunittest来实现,(paramunittest是unittest实现参数化的一个专门的模块),最后用HTMLtestrunner来生成报告
项目地址:https://github.com/lxlovely/interfaceTest.git
代码框架目录
正文代码
(1)首先我们来看一下cinfig.ini里面的内容,这个文件是配置文件,主要用来存一些数据库,邮箱。接口主机基本信息。方便修改和读取啦。
#数据库、邮箱、接口等的配置项,用于方便的调用读取。
[HTTP]
scheme=http
baseurl = xxxxx#接口文档的host也就是域名,如博客域名blog.csdn.net
#port = 8888
timeout = 10.0
[EMAIL]
#on_off是设置的一个开关,=on打开,发送邮件,=其他不发送邮件。
on_off = on
#subject邮件主题
subject = 接口自动化报告
app = Outlook
#发件人
### smtp服务器地址## 发信方的信息:发信邮箱,QQ 邮箱授权码##
mail_host = smtp.qq.com
# 普通端口
mail_port = 25
## 安全链接端口
ssl_port=465
#发件人用户名
mail_user = xxxxxx@qq.com
#邮箱授权码
mail_pass = xxxxxxx
#发件人邮箱
sender = xxxxxx@qq.com
#收件人邮箱,# 多个收件人放在一个list里面
receiver = xxxxx@qq.com,xxxxxx@qq.com
#cc抄送人
cc=xxxxxx@qq.com
[SQL] #数据库
host = ""
(2)封装一个当前路径的函数,用来方便得到当前路径,当然也可以不封装每次获取路径也可。这里我封装了,getpathInfo.py
import os
def get_path():
path = os.path.abspath(os.path.dirname(__file__))#获取当前目录绝对路径
# path= os.path.abspath(os.path.dirname(os.path.dirname(__file__)))##获取上一级目录绝对路径
return path
if __name__ =="__main__":# 执行该文件,测试是否正常
print("测试路径为 %s:"%get_path())
(3)读取配置文件里面的内容,方便后期使用啦,readConfig.py 使用自带的configparser模块可以直接读取配置文件
#读取配置文件的方法,并返回文件中内容
import os
import configparser
from testFile import getpathInfo
##调用实例化,这个类返回的路径为C:\Users\ChenTing\PycharmProjects\interfaceTest\testFile:
path = getpathInfo.get_path()
#返回的路径为C:\Users\ChenTing\PycharmProjects\interfaceTest\testFile\config.ini
config_path = os.path.join(path,'config.ini')
# print(config_path)
config = configparser.ConfigParser()#读取配置文件的方法实例化
config.read(config_path, encoding='utf-8') #读取config_path的文件
class ReadConfig():
def get_http(self,name):
http_value= config.get('HTTP',name)
return http_value
def get_email(self,name):
email_value = config.get('EMAIL',name)
return email_value
def get_sql(self,name):
sql_value = config.get('SQL',name)
return sql_value
# print('HTTP中的baseurl值为:', ReadConfig().get_http('baseurl'))
if __name__ == '__main__':#测试一下,我们读取配置文件的方法是否可用
A=ReadConfig()
print('HTTP中的baseurl值为:', A.get_http('baseurl'))
print("EMAIL中的开关on_off值为:", A.get_email('on_off'))