【问题标题】:python unit test testsuite does not call any test casespython单元测试testsuite不调用任何测试用例
【发布时间】:2018-08-24 20:31:21
【问题描述】:

目前我想通过包含在单元测试中的 Python 测试套件为 50 个测试用例定义一个测试套件。

不幸的是,创建的类拒绝正常工作。

Unittest 参与了导入工作。

import unittest
import test 
import logging
import random

class SwitchTestComplete(unittest.TestSuite):

def setUp(self):


        self.s = SSH(host='xxx.xx.xx.xxx', username='xxxxx', password='xxx')
        self.s.query_interactive = True
    def suite(self):

       suite = unittest.TestSuite()
       suite.addTest(SwitchTestComplete('test_accounting_disable'))
       suite.addTest(test_account_enable('test_account_enable'))
       #suite.addTest(test_accounting_disable('test_create_user'))
       #suite.addTest(test_accounting_disable('test_delete_user'))
       #suite.addTest(test_accounting_disable('test_delete_admin'))
       #suite.addTest(test_accounting_disable('test_create_user_admin'))
       #suite.addTest(test_accounting_disable('test_auto_logout'))
       self.run(suite)

测试

def test_create_user(self):
            if self.s.login():
              q = self.s.query('account')
              #switch to prompt account
              q = self.s.query('add 10 testuser1 testuser1 ')
              q = self.s.query('add 11 testuser2 testuser2 ')
              q = self.s.query('add 11 testuser3 testuser3 ')
              q = self.s.query('add 11 testuser4 testuser4 ')
              q = self.s.query('add 11 testuser5 testuser5 ')
              q = self.s.query('add 11 testuser6 testuser6 ')
              q = self.s.query('add 11 testuser7 testuser7 ')
              q = self.s.query('add 11 testuser8 testuser8 ')
              q = self.s.query('add 11 testuser9 testuser9 ')
              q = self.s.query('add 11 testuser10 testuser10 ')


              import time
              print('Wait')
              time.sleep(3)

出现的问题是单元测试虽然运行但没有调用我在这里指定的测试用例。

【问题讨论】:

  • 您似乎混合了两件事 - 实际测试并将其添加到套件中。您的注释代码也会分散您对问题的注意力 - 是否愿意提供 stackoverflow.com/help/mcve 来代替?
  • 看看stackoverflow.com/a/12011486/1758363 - 它干净地创建了一个套件。注意你不应该在套件中引入新的模拟/设置 - 只是组装现有的测试。

标签: python subprocess python-unittest


【解决方案1】:

除了上面的 cmets,这里还有一个简单的套件示例。

import unittest 

# your intial test
class Test_User(unittest.TestCase):
    def test_create_user(self):
          # self-filfilling
          assert 1

# make a suite
ts = unittest.TestSuite()

# add new instance to a suite
ts.addTest(Test_User('test_create_user'))

# run suite
runner=unittest.TextTestRunner()
runner.run(ts)

后续建议:

  • 不要让你的套件成为一个类,它是一个实例
  • 不要尝试在套件中引入新设置,而是继承具有基本设置的测试用例,我认为它更干净
  • (非常主观)使用pytest - 它比传统的unittest 库更简单、更快地开发

【讨论】:

  • 谢谢这对我有用。但顺便说一句,如何在 pytest 中更改它? Pytest 是否运行 Unittest?
猜你喜欢
  • 2011-10-23
  • 2012-01-08
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
相关资源
最近更新 更多