首页 > 编程语言 >pytest+python+requests+allure接口自动化

pytest+python+requests+allure接口自动化

时间:2024-10-20 22:10:17浏览次数:1  
标签:domain api python py pytest Read allure import requests

文件层级:

接口层,用例层,公共层,报告层,conftest.py

注意:1.需要被调用的类方法,使用@classmethod,这样调用时,无需实例化;

            2.保持登录,使用requests.session;

方式一:

conftest.py:1.登录:fixture(scope=session)写登录方法;2.参数关联:定义空字典,使用fixture(scope=function),闭包方式写提取参数,读取参数;

接口层:类、类属性(url,method);

用例层:导入接口层的类,测试用例方法中调用 方法中传登录方法名,接口地址(类.url);

 方式二:

项目根目录添加到系统路径下,代码放在run.py 或者conftest.py;

base_requests.py:封装执行方法;如,#base/base_requests.py

接口层:继承base_requests; 1.写测试用例(如,登录方法);如,#api_object/api_login.py

用例层:导入接口类,执行;如,#test_case/test_userinfo.py

公共层:读等;如,#common/Read.py

域名:接口层创建工具包,新增读.py,调用公共方法的读,并返回域名;如,#api_object/utils/read_domain.py

confest.py:1.自动调用执行方法;如,#conftest.py

    # 获取项目根目录的绝对路径
    r_dir = os.path.dirname(os.path.realpath(__file__))
    #将项目根目录加入系统路径
    sys.path.insert(0,r_dir)
    #下面可以导入根目录下的模块或包,而不会出现导入错误
    # pytest.main(['-vs'])
    # 运行测试并生成Allure报告的命令行参数

 

#base/base_requests.py
import requests
class BaseCaseExecute:
    method=""
    url = ""
    @classmethod
    def execute(self,**kwargs):
        rs = requests.session()
        response=rs.request(self.method,self.url,**kwargs)
        return response
#api_object/api_login.py
from base.base_requests import BaseCaseExecute
from api_object.utils.read_domain import Read_domain


class Test_api_login(BaseCaseExecute):
    method="post"
    url = Read_domain.read_domain("login") + "/signin" # 读取域名+填写接口地址
#test_case/test_userinfo.py
from api_object.userinfo import userinfo
import allure

class Test_userinfo:
    @allure.title("博客园列表1")  #用例的标题写在每条用例的上一行
    def test_userinfo(self):
        result=userinfo.execute()
        print(result.text)
        assert "星空" in result.text
#common/Read.py
import yaml
from configparser import ConfigParser
class Read:
    @classmethod
    def Read_yaml(self,file_path): #读取yaml文件
        with open(file_path,"r") as f:
            data=yaml.safe_load(f)
        return data

    @classmethod
    def Read_ini(cls,file_path,title,name):#读取ini文件
        config=ConfigParser() #初始化解析器
        config.read(file_path)
        print("读取的ini文件路径:{}".format(file_path))
        value=config.get(title,name) #读取配置文件中的值,如域名
        return value
#api_object/utils/read_domain.py
from common.Read import Read

class Read_domain:
    @classmethod
    def read_domain(cls,name):
        value=Read.Read_ini("config/config.ini", "host", name)
        return value #返回对应域名
#conftest.py
import pytest
#导入读
from common.Read import Read
from api_object.api_login import Test_api_login
headers=Read.Read_yaml("config/config.yaml").get("request_headers")

@pytest.fixture(autouse=True,scope="session") #自动执行,测试用例中无需调用
def login():
    rs=Test_api_login.execute()
    rs.headers.update(headers)

 

标签:domain,api,python,py,pytest,Read,allure,import,requests
From: https://www.cnblogs.com/canglongdao/p/18487957

相关文章

  • python+flask计算机毕业设计最优网络购票系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,网络购票已成为人们日常生活中不可或缺的一部分。特别是在铁路交通领域,网络购票系统的普及极大地缓解了传统购票......
  • python+flask计算机毕业设计高校食堂管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于高校食堂管理系统的研究,现有研究主要以食堂的局部管理功能为主,如单纯的饭卡管理系统或者订餐系统等,专门针对涵盖用户、商户管理员......
  • 用于快速创建机器学习模型的 Web 接口或用户界面的python库:gradio
    一、简介gradio是一个Python库,用于快速创建机器学习模型的Web接口或用户界面,主要优点是允许开发者通过少量的代码创建交互式的Web界面,用户能够上传输入数据并查看模型的输出结果。二、主要特性易于使用:只需几行代码就可以创建接口,不需要前端开发知识。支持多种输入......
  • python实现并发
    1.多线程#-*-coding:utf-8-*-importthreadingimporttimedefprint_hello_world():print("hello-world")defconcurrent_hello_world(n):threads=[]#记录开始时间start_time=time.time()#创建并启动多个线程for_inrange(n)......
  • 10.18Python基础迭代器生成器_函数式编程
    Python迭代器与生成器1.迭代器Iterator什么是迭代器迭代器是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器可以重复使用,而不会像列表那样在迭代时被修改。迭代器函数iter和next函数说明iter(iterable)从可迭代对象中返回一个迭代器,iterabl......
  • Python进阶3
    python迭代器与生成器1.迭代器        在Python中,迭代器(Iterator)是一种对象,它表示一个数据流,允许你一次访问一个元素,直到数据流结束。迭代器对象实现了两个特殊方法:__iter__() 和 __next__()。__iter__() 方法:返回迭代器对象本身。这通常用于使对象既是可迭代的(i......
  • 人脸识别系统Python深度学习opencv人工智能Keras Tensorflow源码
    项目描述基于opencv,Keras,Tensorflow的人脸识别安装好Anaconda,否则很多科学计算的库要手动安装很麻烦安装好TensorFlow,下面是最简便的方法(但是安装的是cpu版本,但速度相对于GPU版的稍微慢#安装TensorFlowcpu版pipinstalltensorflow#安装keras框架pipinstallkeras#安......
  • Python 赋值与运算符和连接符
    a=input("请输入一个数a")b=input("请输入一个数b")a=float(a)          #将数据转换为浮点型b=float(b)          #将数据转换为浮点型c=a+b#定义c=a+bprint("输入的数为c",c)ifa<b:c=belse:c=aprint("......
  • 有没有兄弟Python指导一下啊
          我照着写了一个,为什么执行不对啊 #结合input、字典、if判断,做一个查询(query)流行十二星座的表格slang_dict={"水瓶座":"‌水瓶座的人独立、开放思想、关注社会问题,但可能显得反叛和固执己见。"}slang_dict["‌双鱼座‌"]="双鱼座的人富有同情心、浪漫......
  • 【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Pyt
    ......