У меня есть простой модульный тест, в котором я проверяю, могу ли я создать экземпляр класса 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
одновременно.