搭建python自动化脚本

一:常用测试功能
  1. 数据驱动
    https://cloud.tencent.com/developer/article/1640672
  • DDT基础使用(一):传递基础数据类型
# coding=utf-8
from ddt import *
import unittest

@ddt
class imoocTest(unittest.TestCase):
 
    # int
    @data(1, 2, 3, 4)
    def test_int(self, i):
        print("test_int:", i)

    # str
    @data("1", "2", "3")
    def test_str(self, str):
        print("test_str:", str)

if __name__ == '__main__':
    unittest.main(verbosity=2)
  • DDT传多个参数:
import unittest
from ddt import ddt,data,file_data,unpack
 
@ddt
class TestDDT(unittest.TestCase):
    listb=[(1,1),(2,1),(3,1)]

    @data(*listb)
    @unpack
    def test_addd(self,a,b):
        c= a+b
        print(c)
 
if __name__ == "__main__":
    unittest.main()

requests请求:

import unittest
from ddt import ddt,data,file_data,unpack
import requests
 
@ddt
class TestDDT(unittest.TestCase):
    listb=[("0","1"),("7","0")]

    @data(*listb)
    @unpack
    def test_addd(self,a,b):
        url = "xx"+a+"xx"+b"
        content = str(r.content)
        print(content)
 
if __name__ == "__main__":
    unittest.main()
  • DDT基础使用(二):传递一个复杂的数据结构
# coding=utf-8
from ddt import *
import unittest

@ddt
class imoocData(unittest.TestCase):
    tuples = ((1,2,3),(1,2,3))
    lists = [[1,2,3],[1,2,3]]

    @data((1, 2, 3), (1, 2, 3))
    def test_tuple(self, n):
        print("test_tuple", n)

    # 列表
    @data([1, 2, 3], [1, 2, 3])
    @unpack
    def test_list(self, n1, n2, n3):
        print("test_list", n1, n2, n3)

    # 元组2
    @data(*tuples)
    def test_tuples(self, n):
        print("test_tuples", n)

    # 列表2
    @data(*lists)
    @unpack
    def test_lists(self, n1, n2, n3):
        print("test_lists", n1, n2, n3)

    # 字典
    @data({'value1': 1, 'value2': 2}, {'value1': 1, 'value2': 2})
    @unpack
    def test_dict(self, value1, value2):
        print("test_dict", value1, value2)

if __name__ == '__main__':

    unittest.main()
  • DDT基础使用(三):传递json文件
# coding=utf-8
from ddt import *
import unittest

@ddt
class imoocTest(unittest.TestCase):
    @file_data('x.json')
    def test_json(self,data):
        print(data)

if __name__ == '__main__':
    unittest.main()

json文件要填对

  • DDT基础使用(四):传递Yaml文件
from ddt import *
import unittest

@ddt
class imoocTest(unittest.TestCase):
    @file_data('y.yaml')
    def test4(self, data):
        print("yaml", data)

if __name__ == '__main__':

    unittest.main()

运行的方式:

python3 test.py   ----直接输出
pytest test.py  --html=report.html   ----输出html文件

2.悲催了,本来想用DDT结合pytest的,但是两者没有办法结合,上午主要是白白做了这些。算了,都是成长的,慢慢积累一下,就好了。

ddt应该由TestCase子类使用,因此它不适用于裸测试类。但是请注意,pytest可以很好地运行使用TestCaseddt子类,因此如果您已经有了一个基于ddt的测试套件,那么它应该使用pytest运行程序运行而不需要修改。
还要注意,pytest有parametrize,它可以用来替换ddt支持的许多用例。
例如,以下基于ddt的测试:
转载至:https://www.coder.work/article/2029730

# coding:utf-8
#!/usr/local/bin/python3.8
import pytest
@pytest.mark.parametrize("test_input,expected",
                         [ ("3+5", 8),
                           ("2+4", 6),
                           ("6 * 9", 42),
                         ])
def test_eval(test_input, expected):
    assert eval(test_input) == expected

if __name__ == "__main__":
    pytest.main(["-s", "test.py"])
  1. python的字符串还有一种参数化的方式,通过format函数。这个和pytest的参数化相比,更加的清楚一些,但是是否能够有多种输入,还需要研究一下。
    比如:
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))

https://www.runoob.com/python/att-string-format.html ----format参考

4.结合flask框架,将输出的json,展示的更加优雅一点。
https://zhuanlan.zhihu.com/p/104273184 -----flask的框架
以前用过Django,但是觉得Django的使用没有没有这个轻量。
主函数

#导入render_template模块   #导入Flask类
from flask import  Flask,render_template  
#实例化并命名为app实例
app=Flask(__name__)         

#调用route路由方法,括号里给定参数,/符号默认为首页
@app.route('/')
def index():
    # return 'welcome to my webpage!'
    # return '<h3>welcome to my webpage!</h3><hr><p style="color:red">输出语句测试</p>'
    msg="my name is caojianhua, China up!"
    
    #调用render_template函数,传入html文件参数, 以及加入变量传递
    return render_template("index.html",data=msg)  

if __name__=="__main__":
    #调用run方法,设定端口号,启动服务
    app.run(port=2020,host="127.0.0.1",debug=True)

templates的存储html文件,名为index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>welcome to 2021</title>
</head>
<body>
   welcome to my webpage
    <hr>
   <p>这是采用render_template模板方法获得的内容:</p>
   <br>
   {{data}}  #显示出传递过来的变量内容
</body>
</html>

5.requests模块的的接口测试
https://www.jianshu.com/p/eee66fc81884

  1. 自动化测试的完整流程
    https://testerhome.com/articles/20648
二:搭建uve自动化测试

如何建造???

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,242评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 95,953评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,299评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,709评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,723评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,236评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,629评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,594评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,135评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,156评论 3 345
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,285评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,914评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,600评论 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,073评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,203评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,798评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,339评论 2 365

推荐阅读更多精彩内容