015 python接口 自动化测试 - 禅道

本文详细介绍了一种自动化测试流程,包括使用Python进行文件上传、BUG添加及验证,并通过单元测试确保功能正确性。同时,文章还展示了不同数据格式的处理方式,如元组、列表和JSON数据的构造与应用。

 

 

'''
时间:2018/11/12
目录: 
  一: 自动化测试
  二: 数据格式  
'''

 

一: 自动化测试

1 : 建立工程目录。

 

# coding:utf-8
import requests
import time
from test_018.login_chandao import Login
host = "http://127.0.0.1"

class AddBug():
    def __init__(self, s):
        self.s = s

    def up_load(self,
                jpg_path = "C:\\001.png",
                file_name = "001.png",
                file_type = "imgage/jpeg"):
        '''
        上传文件
        :param jpg_path:
        :param file_name:
        :param file_type:
        :return:
        '''
        url = host + "/zentao/file-ajaxUpload-5be120e20b5af.html?dir=image"
        with open(jpg_path, "rb") as fp:
            f = {
                "imgFile": (file_name, fp.read(), file_type),
                "localUrl": (None, file_name)
            }
            fp.close()

        # 上传图片,或者文件, files=参数
        r = self.s.post(url, files=f)

        try:
            print(r.json())
            return r.json()["url"]
        except:
            print("上传文件失败: %s" %r.text)
            return ""

    def add_bug(self, jpg_url=None, title=None):
        '''
        添加BUG
        :param jpg_url:
        :param title:
        :return:
        '''
        url = host + "/zentao/bug-create-1-0-moduleID=0.html"
        timestemp = str(time.time())
        if title == None:
            t = "title_%s" %timestemp
        else:
            t = title

        if jpg_url == None:
            jpg = "/zentao/data/upload/1/201811/071737170455846p.png"
        else:
            jpg = jpg_url
        body = {
                "product": "1",
                "module": "0",
                "project": "",
                "openedBuild[]": "trunk",
                "assignedTo": "admin",
                "type": "codeerror",
                "os": "",
                "browser": "",
                "color": "",
                "title": t,
                "severity": "3",
                "pri": "0",
                "steps": '<p>[步骤]</p> \
                         <p><img src="%s" alt="" /></p> \
                         <p><br /> \
                         </p> \
                         <p><br /> \
                         </p> \
                         <p>[结果]</p> \
                         <p>[期望]</p>' %jpg_url,
                "story": "0",
                "task": "0",
                # "mailto[]": "",
                # "keywords": "",
                # "files[]": "",
                # "labels[]": "",
                "uid": "5be120e20b5af",
                "case": "0",
                "caseVersion": "0",
                "result": "0",
                "testtask": "0"
        }

        r = self.s.post(url, data=body)
        print("添加BUG: %s" %r.text)
        return r.text

    def is_add_bug_succes(self, result):
        '''
        判断是否成功 - 添加BUG
        :param result: 返回数据 - 服务器
        :return:
        '''
        return "self.location=" in result
    
if __name__ == '__main__':
    s = requests.session()
    zen = Login(s)
    zen.login()

    bug = AddBug(s)
    jpg_url = bug.up_load()

    bug.add_bug(jpg_url, "title")

1 : chandao_add_bug.py

 

# coding:utf-8
import requests


host = "http://127.0.0.1"

class Login():
    def __init__(self, s):
        self.s = s

    def login(self, user="admin", password="123456"):
        '''
        禅道登录
        :param user:        登录用户
        :param password:    登录密码
        :return:            返回数据 - 服务端
        '''

        url = host + "/zentao/user-login.html"
        head = {"Content-Type": "application/x-www-form-urlencoded"
                }
        body = {"account": user,
                "password": password,
                "referer": "http://127.0.0.1/zentao/my/",
                "keepLogin[]": "on",
        }
        r = self.s.post(url, headers=head, data=body)
        print(r.status_code)
        print(r.content.decode("utf-8"))
        return r.content.decode("utf-8")

    def decide_login_success(self, result):
        '''
        判断结果
        :param result:  返回数据 - 服务端
        :return:        True - 登录成功
                         False - 登录失败
        '''

        if "parent.location=" in result:
            print("登录成功!")
            return True
        elif "登录失败,请检查您的用户名或密码是否填写正确" in result:
            print("登录失败,用户名或密码不对")
            return False
        else:
            print("登录失败,其它问题:%s" %result)
            return False

if __name__ == '__main__':
    s = requests.session()
    zentao = Login(s)
    result = zentao.login()             # 登录禅道
    zentao.decide_login_success(result) # 判断结果

1 : login_chandao.py

 

# coding:utf-8
import requests
import unittest
from test_018.login_chandao import Login
from test_018.chandao_add_bug import AddBug

class TestAddBug(unittest.TestCase):
    ''' 测试用例 - 添加BUG '''
    def setUp(self):
        self.s = requests.session()
        self.s.verify = False
        self.zen = Login(self.s)
        self.bug = AddBug(self.s)
        self.zen.login()

    def tearDown(self):
        self.s.close()

    def test_upload(self):
        ''' 测试用例 - 文件上传 '''
        jpgurl = self.bug.up_load()
        self.assertTrue(jpgurl != "")

    def test_add_bug(self):
        jpgurl = self.bug.up_load()
        result = self.bug.add_bug(jpgurl)
        actucl_result = self.bug.is_add_bug_succes(result)
        self.assertTrue(actucl_result)

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

1 : test_case_chandao.py


二: 数据格式

par = (
    ("a", "111"),
    ("a", "xxxx"),
    ("b", "1222"),
)


body = [
    ["a", "xxxx"],
    ["b", "1222"],
]

 

import json

jsondata = {"a": "111",
            "b": "222",
            "c": "cccc"}
body2 = {
    "a": "111",
    "b":  json.dumps(jsondata)
}
r = s.post(url, data=body2)

 

转载于:https://www.cnblogs.com/huafan/p/9949491.html

ZenTaoATF是由开发团队开发的自动化测试框架,它只有一个脚本文件,可以支持各种脚本语言编写的自动化测试脚本,语法简单,使用灵活,后续会和项目管理软件进行绑定和集成。 它的基本工作原理如下: 首先,你需要写一个测试脚本来实现你正常的测试逻辑。现在支持php, python, ruby, lua, tcl, bash。 这个测试脚本里面按照自己所测程序的业务逻辑编写,比如链接数据库,查询某一个记录等等。 然后通过注释的方式为这个测试脚本写上基本的用例信息:标题,步骤和预期结果,采用的是yaml语法格式。 << title: helloworld. expect: helloworld. TC 然后执行zt脚本,zt脚本会扫描当前目录下面的带有用例标志的脚本,然后调用执行,得出每个脚本的实际输出,然后和用例里面事先记录好的预期结果进行比对,如果相匹配,则成功,如果失败,则计算diff信息。 相比较于其他的自动化测试框架或者单元测试框架来将,ZenTaoATF的主要特点如下: 1. 简单 1.1 程序简单 整个自动化测试框架只有一个zt文件,使用php开发,安装和运行都非常的方便。 1.2 语法简单 ZenTaoATF的语法只有简单的标题,步骤,预期结果,采用yaml格式,撰写比较方便,可读性也很好。 2. 跨语言 ZenTaoATF框架本身是使用PHP开发的,但它支持各种各样的脚本语言,比如python, ruby, lua, tcl, bash, bat等。 3. 跨平台 ZenTaoATF可以运行在各个平台下面。(现在暂时只支持linux,windows1.1版本加入) 4. 和项目管理软件集成后续版本我们会和开源项目管理软件进行集成和绑定,脚本和用例可以做到有机的结合。 下载地址:https://github.com/easysoft/zentaoatf/archive/zentaoatf.1.0.20130318.zip 项目地址:https://github.com/easysoft/zentaoatf/如何安装:1. 现在zentaoatf暂时只支持linux和bsd系统,请先安装好php的运行环境。 2. 下载zentaoatf包,将其解压缩到一个目录。 3. 解压缩之后,有一个zt的php脚本。使用命令chmod a rx zt 给它增加可执行权限。 4. 为了后面方便使用,可以考虑将zt这个脚本拷贝到/usr/local/bin目录下面。如何运行:  1. 下载zentaoatf包之后,里面有两个目录,一个是基本的语法,一个是各种脚本语言的格式。 2. 可以在这个目录下面执行执行 zt,就可以运行自动化测试脚本。执行的效果如下: 标签:ZenTaoATF  自动化测试
大家好,自动化测试框架1.2版本发布了。该版本增加了多语言的支持、windows下面增加了ruby, lua, perl, python等常见脚本的支持,并调整了临时目录的位置和日志的格式。 一、关于ZenTaoATF框架 自动化测试框架是由开发团队推出的一款自动化测试框架,只有一个文件,使用简单,灵活,可以适用于命令行、接口和B/S结构应用的自动化测试。将来会和项目管理软件做深度的集成。    请参考:http://www.zentao.net/article-view-79773.html 二、此次版本改动记录  2.1 增加了多语言的支持 当首次执行的时候,zt脚本会提示你选择喜欢的语言,如果是中文的话,还可以选择适用的编码。当选好之后,后面的语言提示就使用中文了。   2.2 windows下面增加了对perl, lua, ruby, tcl等常见脚本的支持 在windows下面执行的时候,如果检测到没有设置解释程序的脚本的时候,会提示你来设置该种脚本的解释程序。 2.3 windows下面调整了临时目录和日志文件的格式 windows下面临时目录放在zt脚本所在的目录下面,并且日志格式保存的时候也存成了dos格式,方便阅读。 三、下载地址 3.1 源码包 http://sourceforge.net/projects/zentaoatf/files/1.2/ZenTaoATF.1.2.zip/download 3.2 windows环境  http://sourceforge.net/projects/zentaoatf/files/1.2/ZenTaoATF.1.2.win.zip/download 源码包需要您的机器上自己安装php命令行的执行环境。windows环境内置了一个php可执行文件,解压缩到一个不含空格的目录,直接执行zt.bat即可查看效果。 四、下个版本的计划 4.1 完善atf的命令行参数。 4.2 完善atf随机的帮助文档。 4.3 和软件进行绑定和集成。 4.4 实现测试步骤的自动提取功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值