自动化测试尝试 动态Linq表达式生成 ftp上传

时间:2024-04-28 12:07:30

自动化测试尝试

1、

Selenium IDE

Selenium IDE is a Chrome and Firefox plugin which records and plays back user interactions with the browser. Use this to either create simple scripts or assist in exploratory testing.

Selenium IDE是一个Chrome 和火狐的插件,用于记录和播放用户操作。可以用于常规性功能测试。

介绍地址:https://www.seleniumhq.org/download/

Google浏览器自动化测试插件下载地址:https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd/related

2、安装后,可看到插件显示在浏览器的图标,单击打开

自动化测试尝试  动态Linq表达式生成  ftp上传

自动化测试尝试  动态Linq表达式生成  ftp上传

3、选择记录一个新的测试:Record a new test in a new project 链接

4、输入项目名称

自动化测试尝试  动态Linq表达式生成  ftp上传

5、输入项目进入的根网站路径,比如百度首页,

自动化测试尝试  动态Linq表达式生成  ftp上传

点击Start Recording开始记录

自动化测试尝试  动态Linq表达式生成  ftp上传

6、在打开的百度输入框里面输入自动化测试

自动化测试尝试  动态Linq表达式生成  ftp上传

7、点击插件可以看到已经记录下了刚才我的操作:

自动化测试尝试  动态Linq表达式生成  ftp上传

8、点击Stop Recording 按钮停止记录,输入测试名称,点击ok,后一个简单的测试实现了

自动化测试尝试  动态Linq表达式生成  ftp上传

9、测试回放:点击Run current test 按钮运行当前测试。

自动化测试尝试  动态Linq表达式生成  ftp上传

动态Linq表达式生成

动态构建 WHERE(C=>C.Id=Value):

自动化测试尝试  动态Linq表达式生成  ftp上传
public static IQueryable<T> WhereEqual<T>(this IQueryable<T> q, string fieldName, string fieldValue)
        {
            Type t = typeof(T);
            ParameterExpression param = Expression.Parameter(t, "c");
            Expression left = Expression.Property(param, t.GetProperty(fieldName));
            Expression right = Expression.Constant(fieldValue);
            Expression filter = Expression.Equal(left, right);
            Expression pred = Expression.Lambda(filter, param);
            Expression expr = Expression.Call(typeof(Queryable), "Where", new Type[] { t }, Expression.Constant(q), pred);
            return q.Provider.CreateQuery<T>(expr);

        }
自动化测试尝试  动态Linq表达式生成  ftp上传

动态构建List的Contains表达式:

自动化测试尝试  动态Linq表达式生成  ftp上传
        public static Expression<Func<TEntity, bool>> ContainsPredicate<TEntity, T>(T[] arr, string fieldname) where TEntity : class
        {
            ParameterExpression entity = Expression.Parameter(typeof(TEntity), "entity");
            MemberExpression member = Expression.Property(entity, fieldname);

            var containsMethods = typeof(Enumerable).GetMethods(BindingFlags.Static | BindingFlags.Public)
            .Where(m => m.Name == "Contains");
            MethodInfo method = null;
            foreach (var m in containsMethods)
            {
                if (m.GetParameters().Count() == 2)
                {
                    method = m;
                    break;
                }
            }
            method = method.MakeGenericMethod(member.Type);
            var exprContains = Expression.Call(method, new Expression[] { Expression.Constant(arr), member });
            return Expression.Lambda<Func<TEntity, bool>>(exprContains, entity);
        }
自动化测试尝试  动态Linq表达式生成  ftp上传

参考地址:https://*.com/questions/278684/how-do-i-create-an-expression-tree-to-represent-string-containsterm-in-c

感想dudu 大佬 :https://q.cnblogs.com/q/111853/

ftp上传

自动化测试尝试  动态Linq表达式生成  ftp上传
public class FtpUtil
    {
        string ftpServerIP;
        string ftpRemotePath;
        string ftpUserID;
        string ftpPassword;
        string ftpURI;

        /// <summary>
        /// 连接FTP
        /// </summary>
        /// <param name="FtpServerIP">FTP连接地址</param>
        /// <param name="FtpRemotePath">指定FTP连接成功后的当前目录, 如果不指定即默认为根目录</param>
        /// <param name="FtpUserID">用户名</param>
        /// <param name="FtpPassword">密码</param>
        public FtpUtil(string FtpServerIP, string FtpRemotePath, string FtpUserID, string FtpPassword)
        {
            ftpServerIP = FtpServerIP;
            ftpRemotePath = FtpRemotePath;
            ftpUserID = FtpUserID;
            ftpPassword = FtpPassword;
            ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/";
        }

        /// <summary>
        /// 上传
        /// </summary>
        /// <param name="filename"></param>
        public void Upload(string filename)
        {
            FileInfo fileInf = new FileInfo(filename);
            string uri = ftpURI + fileInf.Name;
            FtpWebRequest reqFTP;

            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
            reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
            reqFTP.KeepAlive = false;
            reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
            reqFTP.UseBinary = true;
            reqFTP.UsePassive = false;
            reqFTP.ContentLength = fileInf.Length;
            int buffLength = 2048;
            byte[] buff = new byte[buffLength];
            int contentLen;
            FileStream fs = fileInf.OpenRead();
            try
            {
                Stream strm = reqFTP.GetRequestStream();
                contentLen = fs.Read(buff, 0, buffLength);
                while (contentLen != 0)
                {
                    strm.Write(buff, 0, contentLen);
                    contentLen = fs.Read(buff, 0, buffLength);
                }
                strm.Close();
                fs.Close();
            }
            catch (Exception ex)
            {
                throw new Exception("Ftphelper Upload Error --> " + ex.Message);
            }
        }

    }
自动化测试尝试  动态Linq表达式生成  ftp上传