Como organizo meus testes pytest se não os estou distribuindo com meu pacote?

Comosugerido na documentação do pytest, Configurei meu pacote com a intenção de nãonão distribuindo meus testes junto com meu pacote:

setup.py
mypkg/
    __init__.py
    mypkg/
      appmodule.py  
tests/
    test_app.py
    ...

mas estou confuso sobre como garantir que esses testes sejam executados corretamente quando presentes (por exemplo, no Travis CI ou nos clones do diretório do projeto).

Desejo que as importações nos meus scripts de teste sejam aplicadas à fonte no adjacentemypkg/ diretório (e não para qualquermypkg que pode estar instalado nosite-packages), mas estou recebendo erros que me intrigam.

Se eu seguir o conselho nopytest documentação e não coloque um__init__.py notests/ então com

from __future__ import absolute_import
from mypkg.appmodule import * 

eu recebo

ImportError: nenhum módulo chamado mypkg.appmodule

enquanto com

from __future__ import absolute_import
from ..mypkg.appmodule import * 

eu recebo

ValueError: tentativa de importação relativa em não pacote

E se eu ignorar a documentação e incluir um__init__.py, então com o último eu recebo

ValueError: tentativa de importação relativa além do pacote de nível superior

Somente incluindo uma__init__.py e usando

from __future__ import absolute_import
from mypkg.appmodule import * 

meus testes serão executados. Mas não está claro para mim que isso importará a fonte do adjacentemypkg/ diretório se ummypkg está instalado emsite-packages.

Qual é a maneira correta de organizar meupytest testes para que eles sejam separados - e não distribuídos com - a fonte dos meus projetos, mas sempre importe a fonte adjacente e não a versão do pacote que está instalado em outro lugar?

questionAnswers(1)

yourAnswerToTheQuestion