Как автоматически добавлять декораторы иерархии Allure для параметризованных методов в pytest? ⇐ Python
Как автоматически добавлять декораторы иерархии Allure для параметризованных методов в pytest?
В настоящее время я просматриваю подробный перевод вашего вопроса и вскоре предоставлю вам переведенную версию.
Теперь я хочу добавить декораторы @allure.epic, @allure.feature и @allure.story ко всем тестам. методы в тестовом классе единообразно. В настоящее время я использую метод, изменяя метакласс тестового класса, и код ключа выглядит следующим образом:
класс BaseDecorateCase(тип): def __new__(mcls, name, bases, attrs): если name.startswith("Тест"): иерархия = all_method_in_class_dcorated_handler(all_hierarchy_class_doc({"epic":"a","feature":"b","story":"c"}), prefix='test') вернуть иерархию(super().__new__(mcls, name, bases, attrs)) еще: return super().__new__(mcls, name, bases, attrs) def all_method_in_class_dcorated_handler (декоратор, префикс = 'тест'): защита dectheclass(cls): для имени cur_method в Inspect.getmembers(cls, Inspect.isfunction): если имя.startswith(префикс): темп = декоратор (cur_method) setattr(cls, имя, температура) вернуть cls возвращение dectheclass защита all_hierarchy_class_doc(doc): """从类注释获取结构装饰""" иерархия_карта = оценка (документ) защита _case_story_with_class_doc(func): @functools.wraps(функ) @allure.epic(hierarchy_map["epic"]) @allure.feature(hierarchy_map["feature"]) @allure.story(hierarchy_map["история"]) def-обертка(*args, **kwargs): return func(*args, **kwargs) возвратная обертка вернуть _case_story_with_class_doc класс TestCreateOrder (метакласс = BaseDecorateCase): защита test_normal(self): проходить @pytest.mark.parameterize( 'к',[1,2,3,4] ) защита test_params(self, k): проходить Для простых методов тестирования, таких как test_normal, приведенный выше код работает хорошо. Однако для параметризованных методов тестирования, таких как test_params, приведенный выше код не вступает в силу. Как я могу это изменить?
В настоящее время я просматриваю подробный перевод вашего вопроса и вскоре предоставлю вам переведенную версию.
Теперь я хочу добавить декораторы @allure.epic, @allure.feature и @allure.story ко всем тестам. методы в тестовом классе единообразно. В настоящее время я использую метод, изменяя метакласс тестового класса, и код ключа выглядит следующим образом:
класс BaseDecorateCase(тип): def __new__(mcls, name, bases, attrs): если name.startswith("Тест"): иерархия = all_method_in_class_dcorated_handler(all_hierarchy_class_doc({"epic":"a","feature":"b","story":"c"}), prefix='test') вернуть иерархию(super().__new__(mcls, name, bases, attrs)) еще: return super().__new__(mcls, name, bases, attrs) def all_method_in_class_dcorated_handler (декоратор, префикс = 'тест'): защита dectheclass(cls): для имени cur_method в Inspect.getmembers(cls, Inspect.isfunction): если имя.startswith(префикс): темп = декоратор (cur_method) setattr(cls, имя, температура) вернуть cls возвращение dectheclass защита all_hierarchy_class_doc(doc): """从类注释获取结构装饰""" иерархия_карта = оценка (документ) защита _case_story_with_class_doc(func): @functools.wraps(функ) @allure.epic(hierarchy_map["epic"]) @allure.feature(hierarchy_map["feature"]) @allure.story(hierarchy_map["история"]) def-обертка(*args, **kwargs): return func(*args, **kwargs) возвратная обертка вернуть _case_story_with_class_doc класс TestCreateOrder (метакласс = BaseDecorateCase): защита test_normal(self): проходить @pytest.mark.parameterize( 'к',[1,2,3,4] ) защита test_params(self, k): проходить Для простых методов тестирования, таких как test_normal, приведенный выше код работает хорошо. Однако для параметризованных методов тестирования, таких как test_params, приведенный выше код не вступает в силу. Как я могу это изменить?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Пользовательские метки Allure не будут отображаться в итоговом отчете (pytest, allure).
Anonymous » » в форуме Python - 0 Ответы
- 36 Просмотры
-
Последнее сообщение Anonymous
-