Как исправить и почему вообще такая ошибка? 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"
)
тоже объект класса. Так в чем разница, почему же ошибка?