using System;using NUnit.Framework;using Python.Runtime;namespace Python.EmbeddingTest{public class TestPythonEngineProperties{[Test]public static void GetBuildinfoDoesntCrash(){PythonEngine.Initialize();using (Py.GIL()){string s = PythonEngine.BuildInfo;Assert.True(s.Length > 5);Assert.True(s.Contains(","));}}[Test]public static void GetCompilerDoesntCrash(){PythonEngine.Initialize();using (Py.GIL()){string s = PythonEngine.Compiler;Assert.True(s.Length > 0);Assert.True(s.Contains("["));Assert.True(s.Contains("]"));}}[Test]public static void GetCopyrightDoesntCrash(){PythonEngine.Initialize();using (Py.GIL()){string s = PythonEngine.Copyright;Assert.True(s.Length > 0);Assert.True(s.Contains("Python Software Foundation"));}}[Test]public static void GetPlatformDoesntCrash(){PythonEngine.Initialize();using (Py.GIL()){string s = PythonEngine.Platform;Assert.True(s.Length > 0);Assert.True(s.Contains("x") || s.Contains("win"));}}[Test]public static void GetVersionDoesntCrash(){PythonEngine.Initialize();using (Py.GIL()){string s = PythonEngine.Version;Assert.True(s.Length > 0);Assert.True(s.Contains(","));}}[Test]public static void GetPythonPathDefault(){PythonEngine.Initialize();string s = PythonEngine.PythonPath;StringAssert.Contains("python", s.ToLower());PythonEngine.Shutdown();}[Test]public static void GetProgramNameDefault(){PythonEngine.Initialize();string s = PythonEngine.ProgramName;Assert.NotNull(s);PythonEngine.Shutdown();}/// <summary>/// Test default behavior of PYTHONHOME. If ENVVAR is set it will/// return the same value. If not, returns EmptyString./// </summary>[Test]public static void GetPythonHomeDefault(){string envPythonHome = Environment.GetEnvironmentVariable("PYTHONHOME") ?? "";PythonEngine.Initialize();string enginePythonHome = PythonEngine.PythonHome;Assert.AreEqual(envPythonHome, enginePythonHome);PythonEngine.Shutdown();}[Test]public void SetPythonHome(){PythonEngine.Initialize();var pythonHomeBackup = PythonEngine.PythonHome;PythonEngine.Shutdown();if (pythonHomeBackup == "")Assert.Inconclusive("Can't reset PythonHome to empty string, skipping");var pythonHome = "/dummypath/";PythonEngine.PythonHome = pythonHome;PythonEngine.Initialize();Assert.AreEqual(pythonHome, PythonEngine.PythonHome);PythonEngine.Shutdown();// Restoring valid pythonhome.PythonEngine.PythonHome = pythonHomeBackup;}[Test]public void SetPythonHomeTwice(){PythonEngine.Initialize();var pythonHomeBackup = PythonEngine.PythonHome;PythonEngine.Shutdown();if (pythonHomeBackup == "")Assert.Inconclusive("Can't reset PythonHome to empty string, skipping");var pythonHome = "/dummypath/";PythonEngine.PythonHome = "/dummypath2/";PythonEngine.PythonHome = pythonHome;PythonEngine.Initialize();Assert.AreEqual(pythonHome, PythonEngine.PythonHome);PythonEngine.Shutdown();PythonEngine.PythonHome = pythonHomeBackup;}[Test][Ignore("Currently buggy in Python")]public void SetPythonHomeEmptyString(){PythonEngine.Initialize();var backup = PythonEngine.PythonHome;if (backup == ""){PythonEngine.Shutdown();Assert.Inconclusive("Can't reset PythonHome to empty string, skipping");}PythonEngine.PythonHome = "";Assert.AreEqual("", PythonEngine.PythonHome);PythonEngine.PythonHome = backup;PythonEngine.Shutdown();}[Test]public void SetProgramName(){if (PythonEngine.IsInitialized){PythonEngine.Shutdown();}var programNameBackup = PythonEngine.ProgramName;var programName = "FooBar";PythonEngine.ProgramName = programName;PythonEngine.Initialize();Assert.AreEqual(programName, PythonEngine.ProgramName);PythonEngine.Shutdown();PythonEngine.ProgramName = programNameBackup;}[Test]public void SetPythonPath(){PythonEngine.Initialize();const string moduleName = "pytest";bool importShouldSucceed;try{Py.Import(moduleName);importShouldSucceed = true;}catch{importShouldSucceed = false;}string[] paths = Py.Import("sys").GetAttr("path").As<string[]>();string path = string.Join(System.IO.Path.PathSeparator.ToString(), paths);// path should not be set to PythonEngine.PythonPath here.// PythonEngine.PythonPath gets the default module search path, not the full search path.// The list sys.path is initialized with this value on interpreter startup;// it can be (and usually is) modified later to change the search path for loading modules.// See https://docs.python.org/3/c-api/init.html#c.Py_GetPath// After PythonPath is set, then PythonEngine.PythonPath will correctly return the full search path.PythonEngine.Shutdown();PythonEngine.PythonPath = path;PythonEngine.Initialize();Assert.AreEqual(path, PythonEngine.PythonPath);if (importShouldSucceed) Py.Import(moduleName);PythonEngine.Shutdown();}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。