отсутствует 1 ошибка требуемого позиционного аргумента для приспособления при самом мягком.TestCase в унаследованном

#python #pytest

#python #pytest

Вопрос:

Я получаю ошибку, в которой отсутствует 1 требуемый позиционный аргумент для приспособления, когда я наследую самый мягкий.TestCase

примечание: если я удалю самый мягкий.Тестовый тест TestCase будет выполнен, но завершится сбоем при использовании. мой код pytest, как показано ниже :

Содержимое test_compyte.py

 import softest

class Testcompute (softest.TestCase):

    def test_compute(self,param1):
        print("param is ",param1)
        assert param1 > 4

if __name__ == '__main__':
    softest.main()
  

Содержимое conftest.py

 import pytest
import selenium
from selenium import webdriver

def pytest_addoption(parser):

    parser.addoption("--templatename", action="store", help="run all combinations")


def pytest_generate_tests(metafunc):

    if "param1" in metafunc.fixturenames:
        if metafunc.config.getoption("templatename"):
            end = int(metafunc.config.getoption("templatename"))
        else:
            end = 1
        metafunc.parametrize("param1", range(end))
  

Журналы ошибок

 self = <parameter.test_compute.Testcompute testMethod=test_compute>
method = <bound method Testcompute.test_compute of <parameter.test_compute.Testcompute testMethod=test_compute>>

    def _callTestMethod(self, method):
>       method()
E       TypeError: test_compute() missing 1 required positional argument: 'param1'

 TypeError
================================================================ short test summary info =================================================================
FAILED test_compute.py::Testcompute::test_compute - TypeError: test_compute() missing 1 required positional argument: 'param1'
1 failed in 0.22s
  

Комментарии:

1. Я бы предположил, что softest.TestCase это несовместимо с приборами pytest, такими же, как unittest.TestCase . Чтобы это сработало, softest.TestCase нужно было бы знать о pytest fixtures.

2. спасибо за ввод. Я готов использовать все функции softest. Тестовый случай, такой как soft_assert , soft_assertall. проблема в том, что я пытаюсь использовать имя приспособления в качестве аргумента для моего тестового примера с самым мягким. Testcase унаследован.

3. найдено решение проблемы: вместо наследования самого мягкого. TestCase. создайте объект самого мягкого. TestCase, и он будет работать. класс Testcompute (): def test_compute(self,param1): case = самый мягкий. TestCase() print(«param is «,param1) утверждает param1> 4, если name == ‘ main ‘: softest.main()

4. Вы можете добавить это в качестве ответа, это может помочь кому-то еще.

5. @MrBeanBremen, согласен с вами . я не получаю возможность добавить ответ. Я получаю только опцию добавления комментария

Ответ №1:

Обходное решение: вместо наследования softest.TestCase создайте объект softest.TestCase внутри теста.

Обновлено содержимое test_compyte.py:

 class Testcompute: 
    def test_compute(self, param1): 
        case = softest.TestCase() 
        print("param is ", param1) 
        assert param1 > 4 

if name == 'main': 
    softest.main()