美文网首页
app自动化测试框架(四、筛选用例)

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

作者: HC2 | 来源:发表于2021-08-04 10:14 被阅读0次

    一、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自动化测试框架(四、筛选用例)

          本文链接:https://www.haomeiwen.com/subject/viayvltx.html