测试需要几分钟才能运行

时间:2020-10-27 17:31:57

标签: python unit-testing python-unittest

我正在开发一个Flask应用,该应用使用API​​从Magic:The Gathering检索卡片。我将Flask-SQLAlchemy用于我的数据库模型。我现在使用Python中的unittest使用TestCase编写单元测试。我的每项测试都需要很长时间才能运行(即,一次测试大约需要5分钟)。有些测试根本无法完成运行。有几天,我的测试都无法完成运行,并且将运行数小时而没有结果。这是我的测试用例之一:

from app import app
import os
from unittest import TestCase

from home import COLORS, generate_filter_terms, determine_page, determine_index_range, generate_filtered_cards
from models import db, User

app.config['SQLALCHEMY_DATABASE_URI'] = (
os.environ.get('DATABASE_URL', 'postgres:///mtg_db_test'))


class HomeTestCase(TestCase):

    def setUp(self):
        """Create test client, add sample data."""
        db.drop_all()
        db.create_all()

        self.client = app.test_client()

        self.user1 = User.signup(email='email1@gmail.com', password='user1password', username='username_1',
                             image_url=None)

        db.session.commit()

        User.authenticate(username=self.user1.username,
                      password='user1password')

    def test_generate_filter_terms(self):
        category = 'colors'
        default_terms = COLORS
        req_args = {}
        terms = generate_filter_terms(category, default_terms, req_args)
        print(terms)
        # ^^ THIS LINE PRINTS ['White', 'Blue', 'Black', 'Green', 'Red'], NOT SURE WHY THE BELOW ASSERTS WON'T WORK (THEY RUN INFINITELY AND NEVER COMPLETE)

        self.assertIn('White', terms)
        self.assertIn('Black', terms)
        self.assertIn('Red', terms)
        self.assertIn('Blue', terms)
        self.assertIn('Green', terms)

下面是generate_filter_terms()函数:

def generate_filter_terms(category, default_terms, req_args):
    terms = default_terms
    if category in req_args and len(req_args[category]) > 0:
        terms = req_args[category].split(',')
    return terms

我已经写了18项测试,大约花了一周的时间。我至少需要编写40个测试,如果这个问题继续存在,这将花费很长时间。我尝试过在线寻找解决方案,但没有找到任何专门针对unittest出现此问题的人。如果有人对为什么会发生和/或如何解决有任何见解,或者知道在哪里可以找到解决方案,将不胜感激。

0 个答案:

没有答案