Проблемы с использованием pytest и tf.test.TestCase одновременно - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть простой модульный тест, в котором я проверяю, могу ли я создать экземпляр класса Tensorflow с немного другими параметрами.Это похоже на отличный пример использования @pytest.mark.parametrize.

. Однако я обнаружил, что parametrize игнорируется, если мои юнит-тесты являются методами tf.test.TestCase.

.Например, когда я запускаю pytest в следующем коде:

class TestBasicRewardNet(tf.test.TestCase):                                                                                                                          
    @pytest.mark.parametrize("env", ['FrozenLake-v0', 'CartPole-v1',                                                                                               
        'CarRacing-v0', 'LunarLander-v2'])                                                                                                                           
    def test_init_no_crash(self, env):                                                                                                                               
        for i in range(3):                                                                                                                                    
            x = BasicRewardNet(env)  

я получаю ошибку TypeError: test_init_no_crash() missing 1 required positional argument: 'env'.

Чтобы исправить эту проблему, я попытался просто избавиться от оболочки класса, но это заставляет меня упустить некоторую автоматическую инициализацию теста Tensorflow.В частности, теперь каждый BasicRewardNet построен на одном и том же графе TensorFlow, и поэтому мне нужно сделать что-то вроде добавления переменной области видимости, чтобы избежать конфликтов.Добавление в эту переменную область видимо хакиЯ хотел бы иметь возможность использовать parametrize и получить автоматическую инициализацию Tensorflow tf.test.TestCase одновременно.

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