PyCharm 中 unitest 添加测试套件后未按照添加顺序执行问题解决方法

关于unitest 添加测试套件后未按照添加顺序执行问题解决方法

刚刚学习了unitest,就编写了个百度登录的自动化测试脚本。
(PS:刚刚学习,还不完善,请见谅。)

import unittest
from selenium import webdriver
from time import ctime,sleep
from HTMLTestRunner import HTMLTestRunner
class baidulogintest(unittest.TestCase):
    #用例执行前 打开火狐浏览器 打开百度网址 打开登录页面 清空用户名 密码输入框内容
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.get("https://www.baidu.com")
        #等待页面加载,防止页面未加载完毕 出现元素未找到的错误
        sleep(2)
        self.driver.find_element_by_link_text('登录').click()
        sleep(2)
        self.driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__footerULoginBtn"]').click()
        sleep(2)
        self.driver.find_element_by_id('TANGRAM__PSP_10__userName').clear()
        self.driver.find_element_by_id("TANGRAM__PSP_10__password").clear()
    #用例1 用户名不输入 密码12346
    def test_1_login_nameisnone(self):
        self.driver.find_element_by_id('TANGRAM__PSP_10__userName').send_keys("")
        sleep(1)
        self.driver.find_element_by_id("TANGRAM__PSP_10__password").send_keys('123456')
        sleep(0.5)
        self.driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__submit"]').click()
        #取点击登录后的文本提示信息,作为返回结果进行断言比较
        result = self.driver.find_element_by_xpath("//span[@id = 'TANGRAM__PSP_10__error']").text
        #print(result)
        #断言 期望值提示信息与实际信息
        self.assertEqual(result,'请您输入手机/邮箱/用户名s')
    def test_2_login_psdisnone(self):
        self.driver.find_element_by_id('TANGRAM__PSP_10__userName').send_keys("123456")
        sleep(1)
        self.driver.find_element_by_id("TANGRAM__PSP_10__password").send_keys('')
        sleep(0.5)
        self.driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__submit"]').click()
        result = self.driver.find_element_by_xpath("//span[@id = 'TANGRAM__PSP_10__error']").text
        print(result)
        self.assertEqual('请您输入密码',result,)
    def tearDown(self):
        self.driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_4__closeBtn"]').click()
        self.driver.quit()
if __name__ == '__main__':
    suit = unittest.TestSuite()
    suit.addTest(baidulogintest("test_2_login_nameisnone"))
    suit.addTest(baidulogintest("test_1_login_nameisnone"))
    with(open('./result.html', 'wb')) as fp:
        runner = HTMLTestRunner(
            stream = fp,
            title = '百度登录自动化测试报告',
            description = '浏览器:Firfox,系统:windows 10'
        )
        runner.run(suit,rerun = 0 , save_last_run = False)
    #unittest.main()

执行时发现,未按照我添加的测试用例的顺序去执行,还是先执行了 :test_1_login_nameisnone 再次执行了:test_2_login_psdisnone 明明不符合我编写的代码的顺序

    suit = unittest.TestSuite()
    suit.addTest(baidulogintest("test_2_login_psdisnone"))
    suit.addTest(baidulogintest("test_1_login_nameisnone"))
    with(open('./result.html', 'wb')) as fp:

经过同事的帮忙才发现我运行时的环境是
是在unitest环境下运行的,试了这个环境的运行时总会按照case的名称的ASCII去执行是在unitest环境下运行的。试了试这个环境的运行时总会按照case的名称的ASCII去执行。
然后将运行环境改为 正常的python 环境(PS:就是不选择 unitest 的环境)再次运行脚本,将会按照测试套件进行执行。
具体修改环境如下
一、首先选中你项目的环境,选中Edit Configurations…:
在这里插入图片描述
二、点击新建环境 “+”
在这里插入图片描述
三、选中python 环境
在这里插入图片描述
四、选择脚本路径,点击apply,OK ,再次运行即可
在这里插入图片描述
本人新手,正在学习中,可能是不是会发一些自动化或性能方面的问题或者我用到的解决方法,有的部分还不清楚,只能慢慢去了解,如果有大神发现问题或者对我的解决方法有深入解释,请多多指教。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值