FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
pythonnet/src/python_tests_runner/PythonTestRunner.cs at master · QuantConnect/pythonnet · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
QuantConnect
/
pythonnet
Public
forked from
pythonnet/pythonnet
Notifications
You must be signed in to change notification settings
Fork
31
Star
29
Code
Issues
5
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
pythonnet
/
src
/
python_tests_runner
/
PythonTestRunner.cs
Copy path
More file actions
More file actions
Latest commit
History
History
History
83 lines (76 loc) · 2.7 KB
Breadcrumbs
pythonnet
/
src
/
python_tests_runner
/
PythonTestRunner.cs
Copy path
File metadata and controls
83 lines (76 loc) · 2.7 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
using
System
;
using
System
.
Collections
.
Generic
;
using
System
.
IO
;
using
System
.
Linq
;
using
System
.
Reflection
;
using
System
.
Text
;
using
NUnit
.
Framework
;
using
Python
.
Runtime
;
using
Python
.
Test
;
namespace
Python
.
PythonTestsRunner
{
public
class
PythonTestRunner
{
[
OneTimeSetUp
]
public
void
SetUp
(
)
{
PythonEngine
.
Initialize
(
)
;
}
[
OneTimeTearDown
]
public
void
Dispose
(
)
{
PythonEngine
.
Shutdown
(
)
;
}
/// <summary>
/// Selects the Python tests to be run as embedded tests.
/// </summary>
/// <returns></returns>
static
IEnumerable
<
string
[
]
>
PythonTestCases
(
)
{
// Add the test that you want to debug here.
yield
return
new
[
]
{
"test_indexer"
,
"test_boolean_indexer"
}
;
yield
return
new
[
]
{
"test_delegate"
,
"test_bool_delegate"
}
;
}
/// <summary>
/// Runs a test in src/tests/*.py as an embedded test. This facilitates debugging.
/// </summary>
/// <param name="testFile">The file name without extension</param>
/// <param name="testName">The name of the test method</param>
[
TestCaseSource
(
nameof
(
PythonTestCases
)
)
]
public
void
RunPythonTest
(
string
testFile
,
string
testName
)
{
// Find the tests directory
string
folder
=
typeof
(
PythonTestRunner
)
.
Assembly
.
Location
;
while
(
Path
.
GetFileName
(
folder
)
!=
"src"
)
{
folder
=
Path
.
GetDirectoryName
(
folder
)
;
}
folder
=
Path
.
Combine
(
folder
,
".."
,
"tests"
)
;
string
path
=
Path
.
Combine
(
folder
,
testFile
+
".py"
)
;
if
(
!
File
.
Exists
(
path
)
)
throw
new
FileNotFoundException
(
"Cannot find test file"
,
path
)
;
// We could use 'import' below, but importlib gives more helpful error messages than 'import'
// https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly
// Because the Python tests sometimes have relative imports, the module name must be inside the tests package
PythonEngine
.
Exec
(
$@
"
import sys
import os
sys.path.append(os.path.dirname(r'
{
folder
}
'))
sys.path.append(os.path.join(r'
{
folder
}
', 'fixtures'))
import clr
clr.AddReference('Python.Test')
import tests
module_name = 'tests.
{
testFile
}
'
file_path = r'
{
path
}
'
import importlib.util
spec = importlib.util.spec_from_file_location(module_name, file_path)
module = importlib.util.module_from_spec(spec)
sys.modules[module_name] = module
try:
spec.loader.exec_module(module)
except ImportError as error:
raise ImportError(str(error) + ' when sys.path=' + os.pathsep.join(sys.path))
module.
{
testName
}
()
"
)
;
}
}
}
Back
|
FazBrowse Home
|
New Git URL