app自动化测试框架(四、筛选用例)

一、pytest的 -m 选项

pytest支持标记测试用例,选择多标记的测试用例进行执行

import pytest
from page_obj.login_page import LoginPage
import allure

@allure.feature("登录模块")
class TestLogin:

    @allure.title("成功登录")
    @pytest.mark.smoke  #标记用例
    def test_login_success(self, app_page):
        LoginPage(app_page).login('xxxxxxx', 'xxxxxx')
        assert 1 == 1


    @allure.title("失败登录")
    def test_login_error2(self, app_page):
        assert  1 == 1

import pytest,os
cur_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))
result_path = cur_path + '/web/autotest/ui/result/'
result_report = cur_path + '/web/autotest/ui/result_report/'
if not os.path.exists(result_path):os.makedirs(result_path)
if not os.path.exists(result_report):os.makedirs(result_report)

if __name__ == '__main__':

    pytest.main([
        '-m','smoke', #筛选带有smoke标记的所有测试用例
        '--clean-alluredir',
        '--alluredir=' + result_path,
        'test_suites/',
    ])
    os.system("allure generate --clean "+result_path+" --report-dir "+result_report) #转换为html

筛选后只执行 test_login_success这条测试用例

二、多个标记:
(1)、pytest -m "smoke and smoke2" 筛选带有smoke和smoke2的测试用例

import pytest
from page_obj.login_page import LoginPage
import allure

@allure.feature("登录模块")
class TestLogin:

    @allure.title("成功登录")
    @pytest.mark.smoke  #标记用例
    @pytest.mark.smoke2
    def test_login_success(self, app_page):
        LoginPage(app_page).login('xxxxxxx', 'xxxxxx')
        assert 1 == 1

    @pytest.mark.smoke
    @allure.title("成功登录")
    def test_login_error2(self, app_page):
        assert  1 == 1

import pytest,os
cur_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))
result_path = cur_path + '/web/autotest/ui/result/'
result_report = cur_path + '/web/autotest/ui/result_report/'
if not os.path.exists(result_path):os.makedirs(result_path)
if not os.path.exists(result_report):os.makedirs(result_report)

if __name__ == '__main__':

    pytest.main([
        '-m','smoke and smoke2', 
        '--clean-alluredir',
        '--alluredir=' + result_path,
        'test_suites/',
    ])
    os.system("allure generate --clean "+result_path+" --report-dir "+result_report) #转换为html

筛选后只执行 test_login_success这条测试用例

(2)、pytest -m "smoke2 or smoke3" 筛选带有smoke2或者smoke3 的测试用例

import pytest
from page_obj.login_page import LoginPage
import allure

@allure.feature("登录模块")
class TestLogin:

    @allure.title("成功登录")
    @pytest.mark.smoke  #标记用例
    def test_login_success(self, app_page):
        LoginPage(app_page).login('xxxxxxx', 'xxxxxx')
        assert 1 == 1

    @pytest.mark.smoke2
    @allure.title("成功登录")
    def test_login_error2(self, app_page):
        assert  1 == 1

import pytest,os
cur_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))))
result_path = cur_path + '/web/autotest/ui/result/'
result_report = cur_path + '/web/autotest/ui/result_report/'
if not os.path.exists(result_path):os.makedirs(result_path)
if not os.path.exists(result_report):os.makedirs(result_report)

if __name__ == '__main__':

    pytest.main([
        '-m','smoke or smoke2', #筛选带有smoke标记的所有测试用例
        '--clean-alluredir',
        '--alluredir=' + result_path,
        'test_suites/',
    ])
    os.system("allure generate --clean "+result_path+" --report-dir "+result_report) #转换为html

筛选后只执行 test_login_success 和 test_login_error2用例

(3)、
pytest -m "smoke and not smoke2" 筛选带有smoke1 但不带有smoke2的测试

(二)、标记测试类

import pytest
from page_obj.login_page import LoginPage
import allure

@allure.feature("登录模块")
@pytest.mark.smoke
class TestLogin:

    @allure.title("成功登录")
    def test_login_success(self, app_page):
        LoginPage(app_page).login('xxxxxxx', 'xxxxxx')
        assert 1 == 1

    @allure.title("成功登录")
    def test_login_error2(self, app_page):
        assert  1 == 1

运行的时候有个警告:


image.png

解决方式一:添加pytest.int 配置文件


image.png

方式二:


image.png

你可能感兴趣的:(app自动化测试框架(四、筛选用例))