如何在unittest中使用命令行参数? [英] How to use a command line argument in unittest?

查看:345
本文介绍了如何在unittest中使用命令行参数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

出于某种原因,我在尝试在单元测试中使用命令行参数时遇到问题。

For some reason I'm having issues trying to use command line arguments with my unittests.

简单地说,我想要做的就是在所有测试中使用env 。我在这里做什么错了?

Simply put, all I want is to use env with all my tests. What am I doing wrong here?

# -*- coding: utf-8 -*-
import argparse
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
import unittest, time, re

class mySmokeTest(unittest.TestCase):
    def __init__(self, args):
        self.env = args.env

    def setUp(self):
        self.driver = webdriver.Firefox()
        self.base_url = "http://google.com"
        self.verificationErrors = []
        self.accept_next_alert = True

    def test_add_to_cart(self, env):
        # open base page
        driver = self.driver                    
        driver.get("{0}".format(env))

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('env', default='environment to test against')
    args = parser.parse_args()
    env = args.env
    runner = unittest.TextTestRunner()
    itersuite = unittest.TestLoader().loadTestsFromTestCase(mySmokeTest)
    runner.run(itersuite)

错误:

self.env = args.env
AttributeError: 'str' object has no attribute 'env'


推荐答案

我实际上不知道为什么...但是将其主要更改为这样:

I don't actually know why... But changing main to this works:

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument('env', default='url to test against')
    args = parser.parse_args()
    env=args.env
    mySmokeTest.env = env
    runner = unittest.TextTestRunner()
    itersuite = unittest.TestLoader().loadTestsFromTestCase(mySmokeTest)
    runner.run(itersuite)

请注意:

    mySmokeTest.env = args.env does not work

这篇关于如何在unittest中使用命令行参数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆