python自动化测试模板

1:准备html模版

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

    <title>接口自动化</title>

</head>

<body style="margin-top: 20px; font-style: '微软雅黑';">

<table border="1" cellspacing="0" cellpadding="5" width="100%" align="center">

    <tr bgcolor="bisque" style="font-style: 30px">

        <td height="60" colspan="5">

            自动化测试报告:&test_data

             

        </td>

    </tr>

    <tr style="font-style: 20px">

        <td width="20%">被测版本:&version</td>

        <td width="15%">成功:&pass</td>

        <td width="15%">失败:&fail</td>

        <td width="15%">错误:&error</td>

        <td width="30%">最后时间:&lasttime</td>

    </tr>

</table>

<p></p>

<table border="1" cellspacing="0" cellpadding="5" width="100%" align="center">

    <tr height="40" bgcolor="darkseagreen">

        <td width="7%">记录编号:</td>

        <td width="10%">记录编号:</td>

        <td width="9%">记录编号:</td>

        <td width="7%">记录编号:</td>

        <td width="20%">记录编号:</td>

        <td width="7%">记录编号:</td>

        <td width="15%">记录编号:</td>

        <td width="15%">记录编号:</td>

        <td width="10%">记录编号:</td>

        <td width="10%">记录编号:</td>

    </tr>

    &test_result

</table>

</body>

</html>

 打开模版,数据替换

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

'''

Created on Aug 8, 2019

@author: liliang

'''

import os

import time

from ctypes.test.test_pickling import name

class MyClass():

    '''

    classdocs

    '''

    def __init__(self):

        pass

    def open_file(self):

        tempfile=os.path.abspath("..")+"/demo/2.html"

        tem=open(tempfile, mode='r', encoding='utf-8').read()

        return tem

    def write_file(self,file,test_data,version,passnum,faillnum,errornum,lasttime,all_data):

        file=file.replace("&test_data",test_data)

        file=file.replace("&version",version)

        file=file.replace('&pass',passnum)

        file=file.replace('&fail',faillnum)

        file=file.replace('&error',errornum)

        file=file.replace('&lasttime',lasttime)

        content=''

        for in range(0,len(all_data)):

            if all_data[i]["name"=="粉丝":

                content+="<tr height=40 bgcolor='red'>"

                content+="<td width='7%%' >%s</d>" %str(all_data[i]["name"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["age"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["sex"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["school"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["work"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["address"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["sex1"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["school2"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["work3"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["address4"])

                content+="</tr>"

            else:

         

                content+="<tr height=40 bgcolor='bisque'>"

                content+="<td width='7%%' >%s</d>" %str(all_data[i]["name"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["age"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["sex"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["school"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["work"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["address"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["sex1"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["school2"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["work3"])

                content+="<td width='7%%'>%s</d>" %str(all_data[i]["address4"])

                content+="</tr>"

                 

#         for result in all_data:

#             content+="<tr height=40>"

#             content+="<td width='7%%'>%s</d>" %str(result[0])

#             content+="<td width='7%%'>%s</d>" %str(result[1])

#             content+="<td width='7%%'>%s</d>" %str(result[2])

#             content+="<td width='7%%'>%s</d>" %result[3]

#             content+="<td width='7%%'>%s</d>" %result[4]

#             content+="<td width='7%%'>%s</d>" %result[5]

#             content+="<td width='7%%'>%s</d>" %result[6]

#             content+="<td width='7%%'>%s</d>" %result[7]

#             content+="<td width='7%%'>%s</d>" %result[8]

#             content+="<td width='7%%'>%s</d>" %result[9]

#             content+="</tr>"

        file=file.replace('&test_result',content)

        file_folder=os.path.abspath("..")+"/demo/"

        file_name=file_folder+time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())+".html"

        report_file=open(file_name, mode="w+",  encoding='utf-8')

        report_file.write(file)

        report_file.close()

    def get_datetime(self):

        now_time=time.strftime("%Y_%M_%d_%H:%M:%S",time.localtime())

        return now_time

if __name__ == '__main__':

    my=MyClass()

    file=my.open_file()

    all_data=[

            {"name":"Tom","age":23,"sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学2","work3":"学生","address4":"上海"},

            {"name":"数据","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小3学","work3":"学生","address4":"上海"},

            {"name":"粉丝","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学4","work3":"学生","address4":"上海"},

            {"name":"阿道夫","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小fs学","work3":"学生","address4":"上海"},

            {"name":"二娃","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学fa","work3":"学生","address4":"上海"},

            {"name":"我确认","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学","work3":"学生","address4":"上海"},

            {"name":"特务","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学fa","work3":"学生","address4":"上海"},

            {"name":"突然","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学ddd","work3":"学生","address4":"上海"},

            {"name":"圈儿","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小asss学","work3":"学生","address4":"上海"},

            {"name":"让他","age":"13","sex":"男","school":"希望小学","work":"学生","address":"上海","sex1":"男","school2":"希望小学fdsaa","work3":"学生","address4":"上海"},

              ]

    my.write_file(file"2019_07_08_03:07:59""1.3.0""90""7""key error""2019_07_08_03:07:59", all_data)

        

1

 生成报告

工程目录

Python接口自动化测试零基础入门到精通(2023最新版)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/114773.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

天空卫士为集度智能汽车系上“安全带”

10月27日&#xff0c;集度汽车在北京正式发布了旗下首款量产车型——极越 01 SUV。极越 01 SUV 是一款集科技、智能、美学于一身的纯电动中大型SUV&#xff0c;号称全球首款“AI 汽车机器人”。作为集度的合作伙伴&#xff0c;天空卫士第一时间送上祝福&#xff0c;祝愿极越大卖…

基于LDA主题+协同过滤+矩阵分解算法的智能电影推荐系统——机器学习算法应用(含python、JavaScript工程源码)+MovieLens数据集(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据爬取及处理 相关其它博客工程源代码下载其它资料下载 前言 前段时间&#xff0c;博主分享过关于一篇使用协同过滤算法进行智能电影推荐系统的博文《基于TensorFlowCNN协同过滤算法的智能电影推荐系统——深…

centos7-lamp

目录 一、安装 1.关闭防火墙关闭selinux 2.安装apache 3.配置主页 二、部署mariadb&#xff08;mysql&#xff09; 1.用yum安装 2.启动数据库 3.看下端口是否listen 4登录mysql 5.修改下密码 三、安装php 1.安装依赖包 2.安装php解释器和php连接mysql驱动 3.配置…

Pure-Pursuit 跟踪双移线 Gazebo 仿真

Pure-Pursuit 跟踪双移线 Gazebo 仿真 主要参考学习下面的博客和开源项目 自动驾驶规划控制&#xff08;&#xff21;*、pure pursuit、LQR算法&#xff0c;使用c在ubuntu和ros环境下实现&#xff09; https://github.com/NeXTzhao/planning Pure-Pursuit 的理论基础见今年六月…

大模型在代码缺陷检测领域的应用实践

作者 | 小新、车厘子 导读 静态代码扫描(SA)能快速识别代码缺陷&#xff0c;如空指针访问、数组越界等&#xff0c;以较高ROI保障质量及提升交付效率。当前扫描能力主要依赖人工经验生成规则&#xff0c;泛化能力弱且迭代滞后&#xff0c;导致漏出。本文提出基于代码知识图谱解…

【python基础】python切片—如何理解[-1:],[:-1],[::-1]的用法

文章目录 前言一、基本语法二、切片1.a[i:j]2.a[i:j:k] 总结&#xff1a;[-1] [:-1] [::-1] [n::-1] 前言 在python中&#xff0c;序列是python最基本的数据结构&#xff0c;包括有string&#xff0c;list&#xff0c;tuple等数据类型&#xff0c;切片对序列型对象的一种索引方…

Spring Boot Actuator 漏洞利用

文章目录 前言敏感信息泄露env 泄露配置信息trace 泄露用户请求信息mappings 泄露路由信息heapdump泄露堆栈信息 前言 spring对应两个版本&#xff0c;分别是Spring Boot 2.x和Spring Boot 1.x&#xff0c;因此后面漏洞利用的payload也会有所不同 敏感信息泄露 env 泄露配置信…

【音视频 | Ogg】RFC3533 :Ogg封装格式版本 0(The Ogg Encapsulation Format Version 0)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

Linux越学越头疼,我要怎么办?

最近&#xff0c;听到一些同学说&#xff0c;“Linux越学越头疼”。其实这句话&#xff0c;在我之前刚接触Linux的时候&#xff0c;也是深有感触。Linux越学越不明所以。最后干脆放弃学习&#xff0c;转而学习其他东西。 其实大家在初学Linux的时候&#xff0c; 有这个感受&am…

深度学习之基于Tensorflow卷积神经网络学生课堂坐姿姿势识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Tensorflow的卷积神经网络学生课堂坐姿姿势识别系统介绍 Tensorflow是一个流行的开源机器学习框架&#xff0c…

Vue项目运行时报错:‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

报错原因及解决 1.package.json 文件中未定义依赖项vue/cli-service&#xff0c;因此在 npm install 之后并没有安装vue/cli-service 依赖&#xff1b; 解决&#xff1a;项目目录下执行命令&#xff0c;npm i -D vue/cli-service。2.第1步排查后&#xff0c;还是报同样的错&a…

软件测试面试题及答案2024

1、你们的缺陷等级如何划分的&#xff1f;☆☆☆☆☆ 我们的缺陷一般分为四个等级&#xff0c;致命级&#xff0c;严重级&#xff0c;一般级和轻微级。致命级指能够导致软件程序无法使用的缺陷&#xff0c;比如宕机&#xff0c;崩溃&#xff0c;手机APP的闪退&#xff0c;数据…

技术干货 | 基于Modelica的1553B总线模型设计

一、引言 1553B总线是一种常用于航空航天领域的数据总线标准&#xff0c;广泛应用于各类航天器和航空器中。对1553B总线系统进行建模仿真&#xff0c;有助于验证设计、测试功能和排除潜在故障&#xff0c;帮助开发人员提高工作效率、降低开发成本&#xff0c;具有重要的工程意义…

实现dialog在页面随意拖拽

实现dialog在页面随意拖拽 1.先建一个文件如图所示&#xff1a; 文件名:dialog-directive.js 文件内容&#xff1a; import Vue from vue // v-dialogDrag: 弹窗拖拽Vue.directive(dialogDrag, {bind(el, binding, vnode, oldVnode) {// 获取拖拽内容的头部const dialogHeade…

OpenGL ES入门教程(一)编写第一个OpenGL程序

OpenGL ES入门教程&#xff08;一&#xff09;编写第一个OpenGL程序 前言 从本文开始我将参考学习OpenGL ES应用开发实践指南 Android卷 [&#xff08;美&#xff09;KevinBrothaler著]&#xff08;提取码: 394m&#xff09;&#xff0c;并基于自己的理解以更加通俗易懂的方式…

Unity之NetCode多人网络游戏联机对战教程(5)--ConnectionData与MemoryPack

文章目录 前言使用场景ConnectionData数据序列化处理MemoryPack安装MemoryPack日志输出后话学习链接 前言 ConnectionData 与 ConnectionApproval 是搭配使用的&#xff0c;在ConnectionApproval系列讲解中涉及的几个使用场景将会在这里讲解 使用场景 使用密码加入房间 玩家选…

Leetcode—485.最大连续1的个数【简单】

2023每日刷题&#xff08;十五&#xff09; Leetcode—485.最大连续1的个数 实现代码 int findMaxConsecutiveOnes(int* nums, int numsSize){int max 0;int i;int flag 0;int cnt 0;for(i 0; i < numsSize; i) {if(nums[i] 1) {if(flag 0) {flag 1;cnt 1;} else {…

【框架篇】统一用户登录权限验证

✅作者简介&#xff1a;大家好&#xff0c;我是小杨 &#x1f4c3;个人主页&#xff1a;「小杨」的csdn博客 &#x1f433;希望大家多多支持&#x1f970;一起进步呀&#xff01; 统一用户登录权限验证 1&#xff0c;自定义拦截器 对于统一用户登录权限验证的问题&#xff0c…

413 (Payload Too Large) 2023最新版解决方法

文章目录 出现问题解决方法 出现问题 博主在用vue脚手架开发的时候&#xff0c;在上传文件的接口中碰到 这样一个错误&#xff0c;查遍所有csdn&#xff0c;都没有找到解决方法&#xff0c;通过一些方式&#xff0c;终于解决了。 解决方法 1.打开Vue项目的根目录。 2.在根目…

顺序表(2)

目录 Test.c主函数 test5 test6 test7 菜单 Test.c总代码 SeqList.h头文件&函数声明 头文件 函数声明 SeqList.h总代码 SeqList.c函数实现 查找SeqListFind 某位置插入SeqListInsert 某位置删除SeqListErase SeqList.c总代码 顺序表的问题及其思考 多文件…