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"  /></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

时间: 2024-11-08 04:59:24

015 python接口 自动化测试 - 禅道的相关文章

颠覆你的Python接口自动化测试,约吗?

课程 一直以来,我都很喜欢收集大家问的比较多的问题,然后一边回答一边整理成文.今天也不例外,只是由一问一答,变成了三问三答. [你问] 我们为什么要做接口测试? [我答] 之前在<测试路上你问我答>系列里写过一篇答疑,详见<接口测试的是什么和为什么?> [你问] Python 语言现在为什么这么火? [我答] 这个问题,其实我的回答未必全面,大家在简书或者任何一个技术论坛搜索一下,很多阐述.推荐下面这篇:Python 为何能坐稳 AI 时代头牌语言? [你问] 老师,我之前看了你写

Python接口自动化测试框架实战 从设计到开发

第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的http\https请求包.如何模拟请求数据.过滤规则及修改响应数据.如何解决无法抓包问题        以及fiddler接口测试,让大家能应用好工具! 第3章 Requests常见方法实战运用本章重点讲解 get\post请求测试.接口测试中结果处理.上传\下载文件接口测试.请求中header及coo

python接口自动化测试七:文件上传

# 文件上传:content-Type:  multipart/form-data类型 import unittest import requests class SendFile():     def __init__(self, s):         self.s = s     def sendImg(self, jpgpath, jpgname='1.jpg', jpgtype='image/jpeg'):         # 登录并更新cookies         f = open

python接口自动化测试二十三:文件上传

# 以禅道为例: 一.创建一个类,类里面写一个登录方法: import requestsclass LoginZentao(): def __init__(self, s): # 初始化 self.s = s # 定义一个全局的s def login(self): r = self.s.post() # self.s调用全局的s pass if __name__=='__main__': s = requests.session() zentao = LoginZentao(s) # 类实例化为

python接口自动化测试

之前在项目中搞了一套jmeter +jenkins + git + ant接口自动化测试框架,在项目中运行了大半年了,效果还不错, 最近搞了一套requests + unittest + ddt +pymysql + BeautifulReport的接口自动化测试框架, 测试用例在yaml文件中, 支持数据驱动.连数据库查询. 目前框架还不是特别完善,需要在后续的使用中一步步优化,目前尚未使用jenkins做集成, 后续结合jenkins做成持续集成.接口自动化测试框架地址:https://gi

python接口自动化测试 - openpyxl基本使用

前言 当你做接口自动化测试时,测试用例逐渐变多情况下,如果所有测试用例都通过代码管理将会使得代码十分臃肿,而且维护成本会很高: 所以我们一般会通过Excel去管理所有的测试用例,而openpyxl库提供了访问Excel的方法 openpyxl简单介绍 一个Python库,用于读取/写入Excel 2010  xlsx .xlsm .xltx .xltm 文件 不能操作 xls 文件 openpyxl简单概念 Workbook:excel工作表 Sheet:工作表中的一张表 Cell:其中的一个单

基于Python接口自动化测试框架(初级篇)附源码

引言 很多人都知道,目前市场上很多自动化测试工具,比如:Jmeter,Postman,TestLink等,还有一些自动化测试平台,那为啥还要开发接口自动化测试框架呢?相同之处就不说了,先说一下工具的局限性: 1.测试数据不可控:    接口虽然是对业务逻辑.程序代码的测试,而实际上是对数据的测试,调用接口输入一批数据,通过断言代码验证接口返回的数据,整个过程围绕数据测试.    如果返回的数据不是固定的,是变化的,那么断言失败,就无法知道是接口程序错误引起的,还是数据变化引起的,所以就需要进行测

python接口自动化测试框架

环境:python3 + unittest + requests Excel管理测试用例, HTMLTestRunner生成测试报告 测试完成后邮件发送测试报告 jsonpath方式做预期结果数据处理,后期多样化处理 后期扩展,CI持续集成 发送邮件效果: 整体结构: common模块 class IsInstance: def get_instance(self, value, check): flag = None if isinstance(value, str): if check ==

python 接口自动化测试--框架整改(五)

代码结构: 目标架构: 1.用例分析器,自动根据接口的参数,类型生成测试用例 2.数据分析器,自动维护接口参数数据,动态数据自动生成,返回结果自动查询判断 3.核心调用引擎,分SOAP和HTTP两种,调用用例,返回接口调用的结果 4.报告输出,统计用例通过率,错误日志,数据库持久化,持续集成 目前实现功能: 核心调用引擎,数据分析器(demo) 1.用例结构(更新) excel分两个sheet,sheet1中存放用例,结构如下 sheet2中存放测试环境host,接口wsdl地址,接口方法间的映