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

 

 

'''
时间: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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  自动化测试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值