Тестовый пример Pytest не проходит, но дает правильный результат при запуске с терминала с тем же входом - PullRequest
0 голосов
/ 01 декабря 2018

Я новичок в pytest и использую его для модульного тестирования моего кода на Python.У меня есть класс с именем ProblemSorting в файле с именем difficulty.В классе есть метод get_difficulty_order().

Ниже приведен модульный тест, который я написал для проверки метода:

import pytest
from difficulty import ProblemSorting

@pytest.mark.parametrize("num_of_problems, num_of_subtasks, problems, result",
                         [
                             pytest.param(3, 3, [[16, 24, 60],
                                                 [498, 861, 589],
                                                 [14, 24, 62],
                                                 [72, 557, 819],
                                                 [16, 15, 69],
                                                 [435, 779, 232]], [2, 1, 3]),
                             pytest.param(1, 1, [[2], [5]], [1]),
                             pytest.param(0, 0, [], [])])
def test_get_difficulty_order(num_of_problems, num_of_subtasks, problems, result):
    '''hello'''
    prob_sort = ProblemSorting(num_of_problems, num_of_subtasks, problems)
    assert prob_sort.get_difficulty_order() == result

Теперь проблема в том, что тест 2ndдело не удаетсяНо когда я удаляю тестовые случаи 1st и 3rd и сохраняю тестовый случай 2nd, это работает.Даже когда я вручную проверяю код с помощью ввода 2nd, он дает ожидаемый результат.

Примечание: Я также отметил, что, независимо от того, сколько тестовых случаев у него есть, он только успешнопервый и последний контрольные примеры и все посередине не пройдены.

Редактировать: затруднение.py '' 'check' ''

import operator

class ProblemSorting:
    '''Class implementing various methods to solve the problem
       which requires ordering of problem based on its difficulty level
    '''

    # stores the tuple (i, difficulty) where 'i' is the problem number
    # and 'difficulty' is the difficulty level associated with the 'i'th problem
    difficulty_of_problems = list()

    def __init__(self, num_of_problems, num_of_subtasks, problems):
        self.num_of_problems = num_of_problems
        self.num_of_subtasks = num_of_subtasks
        self.problems = problems

Я непонять, что с этим не так.Любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...