软件测试

pytest小白之从入门到实战

2018-12-07  本文已影响597人  白习习_c942

初次接触测试框架的你,肯定希望能更快速的编写自己的测试代码,那么我们开始吧!

1.Pytest介绍

pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但更简洁并高效。
官方网站优点简介:

2. 安装pytest

pip install -U pytest
easy_install -U pytest
二选一即可

安装完成验证安装的版本

py.test --version

3. 官方实例

4.编写测试样例与规范

5.入门实战之批量测试

这里有一个实际应用,我想批量检查一批机器上的CPU,内存,和机器上的2个分区,并将CPU大于80%,内存大于95,和分区大于80%的机器找出来,如何实现呢?
假设这里已经提供好了API,可以读取到所有机器上的CPU、内存、分区信息,API地址为http://api/latestMeteris?userCode=xxx&token=xxx&host=’172.20.116.70,172.20.116.72’&service=CPU,Memory,Disk

访问API时返回一串JSON,信息如下:

{
    "message":"success",
    "result":"success",
    "start":"2017-02-28 13:54:53",
    "data":{
        "Memory":{
            "172.20.116.72":{
                "swap_used":["9.60%"],
                "datetime":["2017-02-28 13:54:41"],
                "merge_time":["2017-02-28 13:54:41"],
                "ram_used":["25.52%"]
            },
            "172.20.116.70":{
                "swap_used":["6.17%"],
                "datetime":["2017-02-28 13:54:41"],
                "merge_time":["2017-02-28 13:54:41"],
                "ram_used":["25.97%"]
            }
        },
        "CPU":{
            "172.20.116.72":{
                "datetime":["2017-02-28 13:54:41"],
                "merge_time":["2017-02-28 13:54:41"],
                "cpu_prct_used":["3.00%"]
            },
            "172.20.116.70":{
                "datetime":["2017-02-28 13:54:41"],
                "merge_time":["2017-02-28 13:54:41"],
                "cpu_prct_used":["1.00%"]
            }
        },
        "Disk":{
            "172.20.116.72":{
                "datetime":["2017-02-28 13:54:41"],
                "merge_time":["2017-02-28 13:54:41"],
                "/export":["25.06%"],
                "/":["21.6%"]
            },
            "172.20.116.70":{
                "datetime":["2017-02-28 13:54:41"],
                "merge_time":["2017-02-28 13:54:41"],
                "/export":["44.68%"],
                "/":["36.15%"]
            }
        }
    },
    "host_size":2,
    "end":"2017-02-28 13:54:53"
}

pytest脚本如下


#!/usr/bin/python
 
import os
import sys
import json
import urllib
import urllib2
import pytest
 
iplist = ["172.20.116.70", "172.20.116.72"]    #定义IP列表
ips = ','.join(iplist)
 
url = 'http://api/latestMeteris?userCode=xxx&token=xxx&host=' + ips + '&service=CPU,Memory,Disk'
req = urllib.urlopen(url)
result = req.read()   #get a string type
 
a = json.loads(result)  #transfer string type to dict type
 
@pytest.mark.parametrize('ip', iplist)
def test_cpu(ip):
    value = a["data"]["CPU"][ip]["cpu_prct_used"][0]
    assert float(value.strip("%")) < 80
 
@pytest.mark.parametrize('ip', iplist)
def test_memory(ip):
    value = a["data"]["Memory"][ip]["ram_used"][0]
    assert float(value.strip("%")) < 95
 
@pytest.mark.parametrize('ip', iplist)
def test_disk(ip):
    value_root = a["data"]["Disk"][ip]['/'][0]
    value_export = a["data"]["Disk"][ip]['/export'][0]
    assert float(value_root.strip("%")) < 80 and float(value_export.strip("%")) < 80

运行结果如下


$ py.test 2.py 
========================= test session starts =========================
platform linux2 -- Python 2.7.4, pytest-3.0.6, py-1.4.31, pluggy-0.4.0
rootdir: /home/zhukun/0224, inifile: 
collected 6 items 
 
2.py ......
 
====================== 6 passed in 0.05 seconds ======================

表示6个用例全部通过。

6. pytest高级进阶——Fixture

本文从pytest基础到深入使用fixture进行了讲解,谢谢支持

参考文章
使用pytest进行批量测试

python单元测试框架pytest简介

Pytest高级进阶之Fixture

上一篇 下一篇

猜你喜欢

热点阅读