最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pytest用yaml文件編寫(xiě)測(cè)試用例流程詳解

 更新時(shí)間:2022年12月17日 10:30:03   作者:愛(ài)學(xué)習(xí)de測(cè)試小白  
這篇文章主要介紹了pytest用yaml文件編寫(xiě)測(cè)試用例流程,本文通過(guò)實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

本篇來(lái)學(xué)習(xí)在pytest中使用yaml編寫(xiě)測(cè)試用例

項(xiàng)目結(jié)構(gòu)

conftest.py

只需在 conftest.py 即可實(shí)現(xiàn)使用yaml編寫(xiě)測(cè)試用例

# -*- coding: utf-8 -*-
import jsonpath
import pytest
import requests
def pytest_collect_file(parent, file_path):
    if file_path.suffix == ".yaml" and file_path.name.startswith("test"):
        return YamlFile.from_parent(parent, path=file_path)
class YamlFile(pytest.File):
    def collect(self):
        import yaml
        yml_raw = self.fspath.open(encoding='utf-8').read()
        print('yml_raw', yml_raw)
        yml_var = Template(yml_raw).safe_substitute(os.environ)
        raw = yaml.safe_load(yml_var)
        print('raw', raw)
        for yaml_case in raw:
            name = yaml_case["test"]["name"]
            values = yaml_case["test"]
            yield YamlItem.from_parent(self, name=name, spec=values)
class YamlItem(pytest.Item):
    def __init__(self, name, parent, spec):
        super().__init__(name, parent)
        self.name = name
        self.values = spec
        self.request = self.values.get("request")
        self.validate = self.values.get("validate")
        self.s = requests.session()
    def values_render_variable(self, values):
        # 替換測(cè)試用例中的關(guān)聯(lián)值
        yaml_test = Template(json.dumps(values)).safe_substitute(os.environ)
        values = yaml.safe_load(yaml_test)
        print('values', values)
        return values
    def runtest(self):
        values = self.values_render_variable(self.values)
        print('values:', values)
        request_data = values["request"]
        response = self.s.request(**request_data)
        print("響應(yīng)數(shù)據(jù):", response.text)
        # 判斷是否有extract提取參數(shù),實(shí)現(xiàn)參數(shù)關(guān)聯(lián)
        if values.get("extract"):
            for key, value in values.get("extract").items():
                os.environ[key] = jsonpath.jsonpath(response.json(), value)[0]
                print('key', key)
                print('value', jsonpath.jsonpath(response.json(), value)[0])
        # 斷言
        print('validate:', self.validate)
        self.assert_response(response, self.validate)
    def assert_response(self, response, validate):
        """自定義斷言"""
        for i in validate:
            if "eq" in i.keys():
                yaml_result = i.get("eq")[0]
                actual_result = jsonpath.jsonpath(response.json(), yaml_result)
                expect_result = i.get("eq")[1]
                print("實(shí)際結(jié)果:%s" % actual_result[0])
                print("期望結(jié)果:%s" % expect_result)
                assert actual_result[0] == expect_result

yaml文件

test_method.yaml

說(shuō)明:

此yaml支持參數(shù)化

extract :提取關(guān)鍵字

  • name: 后面引用變量的key值
  • $.args.name:jsonpath 提取變量表達(dá)式

引用變量

  • $name : $key

- test:
    name: get case
    request:
      url: https://postman-echo.com/get
      method: GET
      headers:
        Content-Type: application/json
        User-Agent: python-requests/2.18.4
      params:
        name: DH
        city: Beijing
    extract:
      name: $.args.name
    validate:
      - eq: [$.args.name, DH]
      - eq: [$.args.city, Beijing]
- test:
    name: post case
    request:
      url: https://postman-echo.com/post
      method: POST
      headers:
        Content-Type: application/json
        User-Agent: python-requests/2.18.4
      json:
        name: $name
        city: Beijing
    validate:
      - eq: [$.json.name, DH]
      - eq: [$.json.city, Beijing]

執(zhí)行并查看結(jié)果

pytest -s -v

到此這篇關(guān)于pytest用yaml文件編寫(xiě)測(cè)試用例流程詳解的文章就介紹到這了,更多相關(guān)pytest編寫(xiě)測(cè)試用例內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django中外鍵使用總結(jié)

    Django中外鍵使用總結(jié)

    本文主要介紹了Django中外鍵使用總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Pandas?DataFrame.drop()刪除數(shù)據(jù)的方法實(shí)例

    Pandas?DataFrame.drop()刪除數(shù)據(jù)的方法實(shí)例

    pandas作為數(shù)據(jù)分析強(qiáng)大的庫(kù),是基于numpy數(shù)組構(gòu)建的,專(zhuān)門(mén)用來(lái)處理表格和混雜的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于Pandas?DataFrame.drop()刪除數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • python持久化存儲(chǔ)文件操作方法

    python持久化存儲(chǔ)文件操作方法

    本文給大家分享python持久化存儲(chǔ)文件操作方法,給大家講解存儲(chǔ)文件的重要性,指針的基本概念及關(guān)閉文件的方法,介紹文件的創(chuàng)建和刪除技巧,感興趣的朋友一起看看吧
    2021-06-06
  • python dict如何定義

    python dict如何定義

    在本篇文章里小編給大家整理的是關(guān)于python dict如何定義的相關(guān)知識(shí)點(diǎn)內(nèi)容,需要的朋友們可以參考下。
    2020-09-09
  • Python使用Selenium實(shí)現(xiàn)瀏覽器打印預(yù)覽功能

    Python使用Selenium實(shí)現(xiàn)瀏覽器打印預(yù)覽功能

    在Web開(kāi)發(fā)中,打印預(yù)覽是一個(gè)常見(jiàn)的功能需求,通過(guò)打印預(yù)覽,我們可以預(yù)覽和調(diào)整網(wǎng)頁(yè)的打印布局、樣式和內(nèi)容,Python的Selenium庫(kù)是一個(gè)強(qiáng)大的工具,可以自動(dòng)化瀏覽器操作,包括打印預(yù)覽,本文將介紹如何使用Python Selenium庫(kù)來(lái)實(shí)現(xiàn)瀏覽器的打印預(yù)覽功能
    2023-11-11
  • Python實(shí)現(xiàn)自動(dòng)簽到腳本功能

    Python實(shí)現(xiàn)自動(dòng)簽到腳本功能

    這篇文章主要介紹了Python實(shí)現(xiàn)自動(dòng)簽到腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python最好的日期處理庫(kù)pendulum的使用指南

    Python最好的日期處理庫(kù)pendulum的使用指南

    關(guān)于日期處理,Python?提供了很多的庫(kù),比如標(biāo)準(zhǔn)庫(kù)?datetime、第三方庫(kù)?dateutil、arrow?等等。本文將為大家介紹一個(gè)小編最喜歡的庫(kù)?pendulum,用起來(lái)可以說(shuō)非常的方便,任何對(duì)日期的操作它都能滿足
    2022-07-07
  • 利用機(jī)器學(xué)習(xí)預(yù)測(cè)房?jī)r(jià)

    利用機(jī)器學(xué)習(xí)預(yù)測(cè)房?jī)r(jià)

    這篇文章主要介紹了利用機(jī)器學(xué)習(xí)回歸模型預(yù)測(cè)房?jī)r(jià),解釋清晰,代碼詳細(xì),是很不錯(cuò)的機(jī)器學(xué)習(xí)實(shí)戰(zhàn)演練,對(duì)機(jī)器學(xué)習(xí)感興趣的朋友可以參考一下
    2021-04-04
  • python 接收處理外帶的參數(shù)方法

    python 接收處理外帶的參數(shù)方法

    今天小編就為大家分享一篇python 接收處理外帶的參數(shù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 利用Django模版生成樹(shù)狀結(jié)構(gòu)實(shí)例代碼

    利用Django模版生成樹(shù)狀結(jié)構(gòu)實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于利用Django模版生成樹(shù)狀結(jié)構(gòu)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評(píng)論

阳春市| 鸡泽县| 来安县| 遵义县| 塘沽区| 马山县| 加查县| 华宁县| 青阳县| 麻江县| 和平区| 台湾省| 睢宁县| 翁牛特旗| 平塘县| 饶平县| 宣化县| 双辽市| 浮梁县| 海宁市| 洛阳市| 津市市| 奉节县| 渝北区| 绵竹市| 苏尼特左旗| 齐齐哈尔市| 台山市| 义马市| 缙云县| 仁怀市| 唐海县| 正宁县| 清远市| 习水县| 房产| 兴仁县| 灵川县| 达孜县| 民权县| 阳山县|