pytest:fixture 之返回值

pytest.fixture 返回值

  • 默认返回None
  • 返回需要的值
  1. 通过pytest.fixture标记函数 @pytest.fixture(scope='module')
    对session只运行一次,所有testcase均链接同一数据库时,则可以设置scope等于 'module'
    Note:因为当前我的登录用户是唯一的,所以我也设置为moduel模式
样例: test_login.py 
目的:获取需要的token
@pytest.fixture(scope='module')
def login():
         url = "你需要请求的url"
        querystring = “请求参数”
        headers = “请求头文件”
       r = requests.post(url, data, headers)
       value = re.findall(r'<Cookie token=(.*?) for', str(r.cookies))[0]
       token = 'token=' + value
      return token

2.测试方法中调用返回值
在样例的函数中设置了fixture,在测试方法中需要token,那么就把login这个函数,传递给类方法

样例: test_login.py 
目的:使用token的值【fixture部分可以单独作为一个模块,后续其他模块直接调用即可,在本文中,fixture和测试方法在同一文件】

class TestClass:
    def test_get_current_user_info(self, login):
        url = "你需要请求的url"
        querystring = “请求参数”
        headers = “请求头文件”
        result = respons.http_request(interface_url=url, interface_param=querystring, headerdata=headers,
                                 request_type='get')
        m = json.loads(result['data'])
        assert m['status'] ==0


3.完整的test_login.py内容

# !__author__ =='wuwa'
# ! -*- utf-8 -*-
import json
import re

import pytest
import requests

from libarry.httprequests import requests_interface

respons = requests_interface()


@pytest.fixture(scope='module')
def login():
"""
获取token
"""
     url = "你需要请求的url"
     querystring = “请求参数”
      headers = “请求头文件”
 
    r = requests.post(url, data, headers)
    value = re.findall(r'<Cookie token=(.*?) for', str(r.cookies))[0]
    token = 'token=' + value
    return token


class TestClass:
    def test_get_current_user_info(self, login):
        """
       获取当前用户信息,需要对应的token信息
        :param login: 
        :return: 
        """
         url = "你需要请求的url"
        querystring = “请求参数”
        headers = {'Cookie': login}
        result = respons.http_request(interface_url=url, interface_param=querystring, headerdata=headers,
                                 request_type='get')
      #  print(result['data'])
        m = json.loads(result['data'])
      #  print("======================")
      #  print(type(m))
        assert m['status'] ==0


if __name__ == "__main__":
    pytest.main()

20180314.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,735评论 0 38
  • 一. fixture介绍 fixture是pytest的一个闪光点,pytest要精通怎么能不学习fixture呢...
    Yating_Yang阅读 33,966评论 6 39
  • ️酵素功效 消化、吸收营养,营养素,改善胃肠道功能。改善胀气、腹泻、便秘等症状,增强体质。 净化血液、排除毒素、改...
    哈咯我阅读 1,586评论 0 0
  • 记忆中你遮住半边脸对我笑的样子,你嘴角的可爱弧度在身后一抹玫瑰色的天空里印上了我四分之一的淡蓝色的夏天。 ...
    将军河街阅读 1,475评论 0 0