接口测试 报错,找不到 conftest 里面的 fixture 'db_alias' not found

testjson · November 15, 2022 · Last by jack replied at December 02, 2022 · 5100 hits

测试用例脚本报错

file D:\sx_api\testcase\test_database_fdnfd_cache_add.py, line 9
      @user1ize("caseinfo",read_yaml_testcase("data/fdnfd_cache.yml"))
      def test_fdnfd_cache_add(self,base_url,caseinfo,connect_sql):
file D:\sx_api\testcase\conftest.py, line 20
  @pytest.fixture(scope="session",autouse=False)
  def connect_sql(db_alias):
E       fixture 'db_alias' not found
>       available fixtures: _verify_url, base_url, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, connect_sql, doctest_namespace, extra, get_token, include_metadata_in_junit_xml, log_init, metadata, monkeypatch, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
>       use 'pytest --fixtures [testpath]' for help on them.

测试用例脚本

class Test_FdNfd_Cache:
    @user3ize("caseinfo",read_yaml_testcase("data/fdnfd_cache.yml"))
    def test_fdnfd_cache_add(self,base_url,caseinfo,connect_sql):
        #通过输入库删除重复数据
        SQL = connect_sql("db_smoothly_supply")
        print(SQL)
        sql1 = "select * from fd_nfd_freight_rate_cache_mag WHERE CreatedBy='zhangxudong222'"
        res = SQL.exec(sql1)
        if res != None:
            sql = "DELETE FROM fd_nfd_freight_rate_cache_mag WHERE CreatedBy='zhangxudong222'"
            SQL.exec(sql)
        else:
            print("没有要删除的数据")
        method_info = caseinfo["request"]["method"]
        data_info = caseinfo["request"]["data"]
        caseinfo["request"]["data"]["tk"] = read_yaml("token")
        urlinfo = caseinfo["request"]["url"]
        url = base_url + urlinfo
        response = RequestUtil().send_all_request(method_info,url,json=data_info)

conftest 文件

#链接数据库固件
@pytest.fixture(scope="session",autouse=False)
def connect_sql(db_alias):
    print("链接数据库")
    init_db(db_alias)
    yield
    print("关闭数据库链接")
    Mysql().del_sql()

基础的读数据库的方法

#初始化数据库信息,通过配置
def init_db(db_alias):
    db_info = ConfigYaml().get_db_conf_info(db_alias)
    host=db_info["db_host"]
    user=db_info["db_user"]
    password=db_info["db_password"]
    db_name=db_info["db_name"]
    db_charset=db_info["db_charset"]
    port=int(db_info["db_port"])
    #初始化mysql对象
    conn = Mysql(host,user,password,db_name,db_charset,port)
    return conn
共收到 3 条回复 时间 点赞

因为我想的是很多脚本都要连数据库,所以把连数据库放在了 conftest 里

@pytest.fixture(scope="session",autouse=False)
def connect_sql(db_alias):

你这里 connect_sql 是个 fixture,它调用的 db_alias 也应该是 fixture

所以你得
@pytest.fixture(scope="session",autouse=True)
def db_alias:
return ...

楼上说的对 你倒是贴下 conftest 文件中的 db_alias 函数啊

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up