科思模块接口免费程序_接口测试模块完整版

先上代码

#data_test.py

from openpyxl import load_workbook

class Date_test():

@classmethod

def Date_test_1(cls):

"""

配置文件读取模块

:return:

"""

wb = load_workbook("data_test.xlsx")

ws = wb["Sheet1"]

url = 'http://localhost/api'

list1 = []

for i in range(1, ws.max_row + 1):

list = []

for j in range(1, ws.max_column + 1):

if j == 3:

str = url + ws.cell(i, j).value

else:

str = ws.cell(i, j).value

list.append(str)

list1.append(list)

wb.close()

Dict = {}

for i in list1:

str = ",".join(i)

list = []

list = str.split(",",1)

Dict[list[0]] = list[1]

return Dict

def Date_test_2(self,test_function,test_text,x):

"""

运行结果写入模块

:param test_function:

:param test_text:

:param x:

:return:

"""

wb = load_workbook("data_test.xlsx")

ws = wb["Sheet2"]

ws.cell(x,1).value = test_function

ws.cell(x,2).value = test_text

wb.save("data_test.xlsx")

wb.close()

@staticmethod

def Email_Date():

username = "username"

password = "password"

To_Email = "from_email_1,from_email_2"

return username,password,To_Email

#Http_pg.py

import requests

class HTTP_CONSOLE():

def http_console(self,Method,url,parameter,Cookies= None):

if Method == "POST":

result = requests.get(url=url,params=parameter,cookies=Cookies)

elif Method =="GET":

result = requests.post(url=url,data=parameter,cookies=Cookies)

else:

print("请求方式输入错误,目前仅支持POST/GET两种请求方式!")

return result

#test_case.py

from data_test import *

from Http_pg import *

import json

import unittest

class test_case(unittest.TestCase):

@classmethod

def setUp(cls):

cls.Cookie = test_case().test_login()

@classmethod

def tearDown(cls):

print("测试用例执行完毕")

def test_register(self):

str = Date_test.Date_test_1()["register"]

list = str.split(",")

Method = list[0]

url = list[1]

Dict_login = {}

Dict_login["mobilephone"] = eval(list[2])

Dict_login["pwd"] = eval(list[3])

result = HTTP_CONSOLE().http_console(Method=Method, url=url, parameter=Dict_login)

Date_test().Date_test_2(test_function="register",test_text=json.loads(result.text)["msg"],x=1)

# self.assertEqual(json.loads(result.text)["msg"],"注册成功")

self.assertEqual(json.loads(result.text)["msg"],"手机号码已被注册")

def test_login(self):

str = Date_test.Date_test_1()["login"]

list = str.split(",")

Method = list[0]

url = list[1]

Dict_login= {}

Dict_login["mobilephone"] = eval(list[2])

Dict_login["pwd"] = eval(list[3])

result = HTTP_CONSOLE().http_console(Method=Method,url=url,parameter=Dict_login)

self.Cookie = result.cookies

Date_test().Date_test_2(test_function="login", test_text=json.loads(result.text)["msg"],x=2)

self.assertEqual(json.loads(result.text)["msg"],"登录成功")

return self.Cookie

def test_recharge(self):

str = Date_test.Date_test_1()["recharge"]

list = str.split(",")

Method = list[0]

url = list[1]

Dict_login = {}

Dict_login["mobilephone"] = eval(list[2])

Dict_login["amount"] = eval(list[3])

result = HTTP_CONSOLE().http_console(Method=Method, url=url, parameter=Dict_login,Cookies = self.Cookie)

Date_test().Date_test_2(test_function="recharge", test_text=json.loads(result.text)["msg"], x=3)

self.assertEqual(json.loads(result.text)["msg"], "充值成功")

def test_withdraw(self):

str = Date_test.Date_test_1()["withdraw"]

list = str.split(",")

Method = list[0]

url = list[1]

Dict_login = {}

Dict_login["mobilephone"] = eval(list[2])

Dict_login["amount"] = eval(list[3])

result = HTTP_CONSOLE().http_console(Method=Method, url=url, parameter=Dict_login,Cookies = self.Cookie)

Date_test().Date_test_2(test_function="withdraw", test_text=json.loads(result.text)["msg"], x=4)

self.assertEqual(json.loads(result.text)["msg"], "取现成功")

if __name__ == '__main__':

unittest.main()

#Email_test.py

import HTMLTestRunnerNew

from email.mime.text import MIMEText

from email.header import Header

import smtplib

import unittest

import os

from data_test import *

from email.mime.multipart import MIMEMultipart

class Email_Console():

def __init__(self):

self.username, self.password, self.To_Email = Date_test.Email_Date()

def send_main(self, file_new):

"""

发送邮件方法

:param file_new:

:return:

"""

msg = MIMEMultipart("Emaik_TestText")

msg['Subject'] = Header('自动化测试报告', 'utf-8')

msg['From'] = self.username

msg['To'] = self.To_Email

with open(file_new, 'rb') as f:

mail_body = f.read()

msg.attach(MIMEText(mail_body, 'html', 'utf-8'))

with open("result.html", "rb") as f:

mail_attach = f.read()

att1 = MIMEText(mail_attach, 'base64', 'utf-8')

att1["Content-Type"] = 'application/octet-stream'

att1["Content-Disposition"] = 'attachment; filename="report_test.html"'

msg.attach(att1)

with open("data_test.xlsx","rb") as f:

mail_attach = f.read()

att2 = MIMEText(mail_attach, 'base64', 'utf-8')

att2["Content-Type"] = 'application/octet-stream'

att2["Content-Disposition"] = 'attachment; filename="data_test.xlsx"'

msg.attach(att2)

try:

smtp = smtplib.SMTP()

smtp.connect("smtp.163.com", 25)

smtp.login(self.username, self.password)

smtp.sendmail(self.username, self.To_Email.split(","), msg.as_string())

smtp.quit()

except Exception as e:

print("Send Email Failed!!!")

raise e

def new_report(self, testreport):

"""

生成并查找查找最新测试报告方法

:param testreport:

:return:

"""

# 生成测试用例

fp = open("result.html", 'wb')

runner = HTMLTestRunnerNew.HTMLTestRunner(stream=fp, title='2019年4月9日前程贷接口测试报告', description='所有测试情况',

tester="桂马")

discove = unittest.defaultTestLoader.discover(".", pattern="test_*.py")

runner.run(discove)

fp.close()

# 查找测试用例

lists = os.listdir(testreport)

lists.sort(key=lambda fn: os.path.getmtime(testreport + "\\" + fn))

file_new = os.path.join(testreport, lists[-1])

print(file_new)

return file_new

if __name__ == "__main__":

email_test = Email_Console()

file_path = email_test.new_report(os.getcwd()) # 查找新生的报告

email_test.send_main(file_new=file_path) # 调用发邮件模块

data_test.xlsx文件中Sheet1

Sheet2

注意点:

1.setUp中获取返回cookies值算不上用得好,只能算面前能用,其他方法还有修改TestCase模块中默认值,添加self.Cookie这个值,然后直接用,但我不怎么想使用这个方法,所以放弃了

后记:

后续会陆续更新test_case文件中的测试用例,多写自然就熟悉了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值