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

pytest用yaml文件編寫測試用例流程詳解

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

前言

本篇來學(xué)習(xí)在pytest中使用yaml編寫測試用例

項目結(jié)構(gòu)

conftest.py

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

# -*- 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):
        # 替換測試用例中的關(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ù),實現(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("實際結(jié)果:%s" % actual_result[0])
                print("期望結(jié)果:%s" % expect_result)
                assert actual_result[0] == expect_result

yaml文件

test_method.yaml

說明:

此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文件編寫測試用例流程詳解的文章就介紹到這了,更多相關(guān)pytest編寫測試用例內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

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

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

    python持久化存儲文件操作方法

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

    python dict如何定義

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

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

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

    Python實現(xiàn)自動簽到腳本功能

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

    Python最好的日期處理庫pendulum的使用指南

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

    利用機(jī)器學(xué)習(xí)預(yù)測房價

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

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

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

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

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

最新評論

马龙县| 百色市| 临海市| 葫芦岛市| 黎平县| 广平县| 宁德市| 儋州市| 银川市| 大丰市| 胶南市| 海阳市| 通化市| 洪洞县| 建阳市| 徐州市| 梅河口市| 堆龙德庆县| 正宁县| 合水县| 西华县| 山西省| 平泉县| 明星| 平山县| 丰宁| 新晃| 扎囊县| 鹤庆县| 宜城市| 长春市| 沙洋县| 华坪县| 墨脱县| 登封市| 呼和浩特市| 邳州市| 兴业县| 淳化县| 祁门县| 沛县|