还是以Jenkins接口测试为例,Jenkins提供了“禁用”和“启用”job的接口,这个接口的方法是POST方法。我们就以这个接口为例。

我们先点击任何一个job,比如“PythonRun”这个job,在打开的页面右下角REST API,在打开的页面中查看提供的接口。我们可以发现这里有个“Disable/Enable a job”的接口:


点击“this URL”,查看接口:

“禁用”:http://localhost:8080/job/PythonRun/disable

“启用”:http://localhost:8080/job/PythonRun/enable

还用到需要查看job状态的接口,点击页面上的:


查看job信息接口:http://localhost:8080/job/PythonRun/api/json

测试思路:

首先调用接口查看job的状态,如果job状态是“启用”,则调用Disable job的接口,之后再查看一次job状态,然后断言该job是“禁用”状态。

如果开始是禁用状态,则调用Enable job的接口,之后再查看一次job状态,然后断言该job是“启用”状态。

测试脚本:

import requests
import pytest


class JK(object):
    def __init__(self):
        self.disable_url = "http://localhost:8080/job/PythonRun/disable"
        self.enable_url = "http://localhost:8080/job/PythonRun/enable"
        self.job_url = "http://localhost:8080/job/PythonRun/api/json"


class TestJenkins(object):
    """
    Test get a list of jobs from jenkins
    """
    @pytest.fixture(scope="module")
    def jk(self):
        return JK()

    def test_disable_job(self, jk):
        r = requests.post(jk.enable_url)
        assert r.status_code == 200
        requests.post(jk.disable_url)
        r = requests.get(jk.job_url)
        buildable = r.json()['buildable']
        assert buildable is False

    def test_enable_job(self, jk):
        r = requests.post(jk.disable_url)
        assert r.status_code == 200
        requests.post(jk.enable_url)
        r = requests.get(jk.job_url)
        buildable = r.json()['buildable']
        assert buildable is True

 运行测试:

C:\Users\liu.chunming\Desktop>py.test test_report.py --html=.\log.html

查看测试报告:

脚本分析:

1、我们将Jenkins提供的接口放到JK类中集中管理

2、定义一个TestJenkins类用来测试jenkins接口,因为我们用pytest测试框架,所以这个类以test开头;

3、测试类中,利用pytest的fixture机制顶一个jk方法,该方法在该测试模块执行前执行,返回一个JK类的对象

4、测试类中,写了两个测试样例,都是用test开头的,一个是test_disable_job,一个是test_enable_job

5、test_disable_job测试样例中,首先调用enbale job的接口,并且断言接口调用成功,接着调用disable job的接口,然后获取job状态的接口获取buildable字段,如果是false代表,通过disable job接口已经成功将job禁用了。

6、test_enable_job测试样例中,首先调用disable job接口,并且断言接口调用成功,接着调用enbale job接口,然后通过获取job状态的接口获取buildable字段,如果是true则代表通过enable job接口已经成功将job启用了。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐