Как исправить и почему вообще такая ошибка? BasicController. was given

Код

from jmeter_api.timers.constant_throughput_timer.elements import ConstantThroughputTimer
from jmeter_api.timers.constant_timer.elements import ConstantTimer
from jmeter_api.non_test_elements.test_plan.elements import TestPlan
from jmeter_api.controllers.loop_controller.elements import LoopController
from jmeter_api.test_fragment.elements import TestFragment
from jmeter_api.controllers.module_controller.elements import ModuleController
from jmeter_api.samplers.http_request.elements import HttpRequest
# from jmeter_api.samplers.jsr223.elements import JSR223
from jmeter_api.thread_groups.common_thread_group.elements import CommonThreadGroup
from jmeter_api.controllers.transaction_controller.elements import TransactionController
from jmeter_api.basics.sampler.elements import FileUpload, UserDefinedVariables

if __name__ == "__main__":
    test_plan = TestPlan(name='Test Plan')

    vars = UserDefinedVariables(name="my_variable_name", value="my_variable_value")

    user_defined_variables = []

    user_defined_variable1 = UserDefinedVariables(name="variable_name1", value="variable_value1")
    # user_defined_variable2 = UserDefinedVariables(name="variable_name2", value="variable_value2")

    user_defined_variables.append(user_defined_variable1)

    test_plan.append(CommonThreadGroup(continue_forever=True, name='FirstThreadGroup')
                     # ошибка в том, что в append подается Nonetype почему то
                     .append(HttpRequest(host='www.google.com').add_user_variable(user_defined_variable1))
                     # .append(HttpRequest(host='www.google.com'))
                     # .append(ConstantTimer(delay=1000))
                     )

Выдает ошибку

TypeError: new_element must be BasicSampler, BasicTimer, BasicConfig, BasicListener, BasicPreProcessor, BasicPostProcessor, BasicAssertion, BasicTestFragment or BasicController. <class 'NoneType'> was given

Упрощаем код

if __name__ == "__main__":

    user_defined_variable1 = UserDefinedVariables(name="variable_name1", value="variable_value1")
    # user_defined_variable2 = UserDefinedVariables(name="variable_name2", value="variable_value2")

    user_defined_variables = []

    user_defined_variables.append(user_defined_variable1)
    # user_defined_variables.append(user_defined_variable2)
    http_request = HttpRequest(
        name="123",
        host="321",
        path="/endpoint"
    ).add_user_variable(user_defined_variable1)

    http_request
    print(type(http_request))

Так понимаю, что

HttpRequest(
        name="123",
        host="321",
        path="/endpoint"
    ).add_user_variable(user_defined_variable1)

Эта штука возвращает NoneType

Окей, меняем код, записывая элемент в переменную

    user_defined_variable1 = UserDefinedVariables(name="variable_name1", value="variable_value1")
    # user_defined_variable2 = UserDefinedVariables(name="variable_name2", value="variable_value2")

    user_defined_variables = []

    user_defined_variables.append(user_defined_variable1)
    # user_defined_variables.append(user_defined_variable2)
    http_request = HttpRequest(
        name="123",
        host="321",
        path="/endpoint"
    )

    http_request.add_user_variable(user_defined_variable1)
    print(type(http_request))

Теперь выдает

<class 'jmeter_api.samplers.http_request.elements.HttpRequest'>

То есть, получается, что вызывая метод add_user_variable у переменной http_request мы получаем объект класса. А вызывая метод add_user_variable не у переменной, то получаем nonetype?

В моем понимании в http_request записывается объект класса HttpRequest И

HttpRequest(
        name="123",
        host="321",
        path="/endpoint"
    )

тоже объект класса. Так в чем разница, почему же ошибка?


Ответы (0 шт):